我有一些Typescript接口,它定义了一些属性,但也可以被视为any object
interface IBob {
makesBurgers?: boolean;
hasRestaurant?: boolean;
[key: string]: any; // whatever other properties someone wants to thow at it
}
上面的代码编译得很好,但是它不会检查makeBurgers
是boolean
。以下代码显示没有错误:
const Bob: IBob = {};
Bob.makesBurgers = "sure"; // would be nice if this was an error, but it isn't
如何创建一个尽可能多地进行类型检查的界面,而不是定义它可能拥有的每一个属性?
编辑:在某些情况下,某些ts-lint似乎没有捕获到这个错误,而在更新的游乐场中,它确实如此。这是旧版ts-lint的问题,解决方案是更新。
答案 0 :(得分:2)
类型检查器应该为此抛出一个错误(它在TypeScript 2.6上)。您的IDE似乎是问题,您可能应该检查您是否使用正确的版本或重新安装。
请注意,这与tslint
无关。 tslint
添加了更多诊断信息,除非您的IDE tslint
插件存在错误,否则不应删除任何TypeScript诊断信息。