在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 }