在TypeScript中的对象文字中input定义
在TypeScript中,可以声明属性的types,例如:
class className{ property : string; };
我应该如何编写代码来声明对象字面值的属性types? 这样的代码不能编译:
var obj = { property: string; };
(我得到错误 – 名称'string'不存在于当前范围)。
我做错了什么或者是一个错误?
你非常接近,你只需要用=
replace=
。 您可以使用对象types文字(请参阅规范章节3.5.3)或一个接口。 使用一个对象types文字是接近你有什么:
var obj: { property: string; } = { property: "foo" };
但是你也可以使用一个接口
interface MyObjLayout { property: string; } var obj: MyObjLayout = { property: "foo" };
使用cast操作符来简化(通过将null转换为所需的types)。
var obj = { property: <string> null };
一个更长的例子:
var call = { hasStarted: <boolean> null, hasFinished: <boolean> null, id: <number> null, };
这比有两个部分要好得多(一个声明types,另一个声明默认值):
var callVerbose: { hasStarted: boolean; hasFinished: boolean; id: number; } = { hasStarted: null, hasFinished: null, id: null, };
更新2016-02-10 – 处理TSX(谢谢@Josh)
使用TSX的as运算符。
var obj = { property: null as string };
一个更长的例子:
var call = { hasStarted: null as boolean, hasFinished: null as boolean, id: null as number, };
如果您正在尝试编写types注释,则语法是:
var x: { property: string; } = ...;
如果您正在尝试编写对象文字,则语法是:
var x = { property: 'hello' };
您的代码尝试在值的位置使用types名称。
如果我们正在声明对象,那么打字稿
[访问修饰符]variables名称:{//对象结构}
private Object:{Key1:string , Key2:number }