【发布时间】:2021-03-21 18:47:02
【问题描述】:
我是 Typescript 的新手,只是探索如何转换我们现有的 JS 代码。我的方法(可能有缺陷)是做最少的事情让它在 TypeScript 中工作,然后逐渐将其转换为遵循“最佳实践”。
我好像在第一道关口就掉下来了.....
我有以下 TypeScript,使用 jQuery(在 ASP.NET .NET5 应用程序中)。
interface MyInterface {
prop1: string;
prop2: number;
}
const something = {
currentThing : MyInterface,
init: (): void => {
//
}
};
$(something.init);
所以想法是当页面加载时,something.init 将被执行。这将设置诸如事件处理程序通过 jQuery 选择器,等。 等。所有这部分似乎都可以正常工作。
不过……
在某个时候,一个事件处理程序将触发,我将创建一个将实现MyInterface 的新对象。我需要保留它(通过将其设置为属性/字段currentThing 的值),以便以后的事件可以访问它。
但是,Typescript 不喜欢 currentActivity: MyInterface, 行,我得到了错误:
'MyInterface' 仅指一种类型,但在这里用作值。
【问题讨论】:
-
您不能将类型分配给对象字面量内的属性。您需要为
something对象分配一个类型for,例如const something: { currentThing: MyInterface, init: () => void } = { /* ... */}。提取该接口可能也是一个好主意。
标签: javascript typescript