如何创建一个Typescript接口,类型检查一些属性,但也允许任何prorperty?

时间:2018-03-22 16:06:43

标签: typescript

我有一些Typescript接口,它定义了一些属性,但也可以被视为any object

interface IBob {
  makesBurgers?: boolean;
  hasRestaurant?: boolean;
  [key: string]: any;  // whatever other properties someone wants to thow at it
}

上面的代码编译得很好,但是它不会检查makeBurgersboolean。以下代码显示没有错误:

const Bob: IBob = {};
Bob.makesBurgers = "sure"; // would be nice if this was an error, but it isn't

如何创建一个尽可能多地进行类型检查的界面,而不是定义它可能拥有的每一个属性?

编辑:在某些情况下,某些ts-lint似乎没有捕获到这个错误,而在更新的游乐场中,它确实如此。这是旧版ts-lint的问题,解决方案是更新。

1 个答案:

答案 0 :(得分:2)

类型检查器应该为此抛出一个错误(它在TypeScript 2.6上)。您的IDE似乎是问题,您可能应该检查您是否使用正确的版本或重新安装。

请注意,这与tslint无关。 tslint添加了更多诊断信息,除非您的IDE tslint插件存在错误,否则不应删除任何TypeScript诊断信息。