TypeScript 中对象字面量中的类型定义

新手上路,请多包涵

在 TypeScript 类中,可以为属性声明类型,例如:

 class className {
  property: string;
};

如何在对象文字中声明属性的类型?

我尝试了以下代码,但无法编译:

 var obj = {
  property: string;
};

我收到以下错误:

当前范围内不存在名称“字符串”

我做错了什么还是这是一个错误?

原文由 Dace Zarina 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 520
2 个回答

您非常接近,您只需将 = 替换为 : 。您可以使用对象类型文字(参见规范第 3.5.3 节)或接口。使用对象类型文字接近于您所拥有的:

 var obj: { property: string; } = { property: "foo" };

但是你也可以使用一个接口

interface MyObjLayout {
    property: string;
}

var obj: MyObjLayout = { property: "foo" };

原文由 Brian Terlson 发布,翻译遵循 CC BY-SA 3.0 许可协议

只是为了扩展@RickLove 的回复……

这很好用,因为您只需要定义无法推断的类型:

 const initialState = {
   user: undefined as User | undefined,
   userLoading: false
};

它转译成这个 js 代码:

 const initialState = {
   user: undefined,
   userLoading: false
};

如果你需要将它提取到一个类型中,你可以这样做:

 export type InitState = typeof initialState;

原文由 Zoman 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Stack Overflow 翻译
子站问答
访问
宣传栏