繁体   English   中英

在TypeScript中键入文字对象

[英]Typed literal objects in TypeScript

我有一个包含函数store.add(a:any)的Ext JS的TS定义文件(它有很多重载,所以我想这是为了简化d.ts文件)。 我想传递一个实现Person接口的文字对象:

interface Person
{
  name: string;
  age: number
}

store.add(<Person>{ name: "Sam" });

这给了我intellisense,但不幸的是它只是将文字强制转换为Person,而没有检测到缺失的字段。 这可以按我的意愿工作:

var p : Person = { name: "Sam" }; // detects a missing field
store.add(p);

但有没有办法在没有单独变量的情况下做到这一点?

我意识到这将通过'固定'定义文件来解决,但我认为许多Javascript库有太多的重载来允许这个。 我几乎需要一种动态重载函数定义的方法..! 仿制药会帮助吗?

是的泛型似乎是答案。 在定义文件中更改:

add?( model:any ): Ext.data.IModel[];

add?<T>( model:T ): Ext.data.IModel[];

允许你打电话

store.add<Person>({ name: "sam" });

并且它正确显示错误!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM