在以下代码中...
interface Options {
allowed?: string;
}
function test(options: Options) {
return options;
}
const options = {
allowed: 'allowed',
notAllowed: 'notAllowed',
};
test(options); // does not throw an error
Run Code Online (Sandbox Code Playgroud)
为什么在调用时添加notAllowed到options不在 Typescript 中抛出错误test(options)?
我怎样才能写这个,这样多余的属性就被禁止了?
编辑 1...
如果我将 Typescript 重写为const options: Options = {...};.
但是,打字稿不应该推断出这一点,因为我已经指定函数中的选项参数应该是选项类型吗?
如果没有,在尝试传入时打字稿不应该抛出错误const object = {...};吗?
否则,这对于其他开发人员将他们自己的对象传递到test函数中不是很有用。
编辑 2...
我想要这个的原因是为了我不希望开发商拼错属性的选项包。例如,我希望他们能够提供一个include属性并禁止该includes属性。当他们将对象变量(而不是对象文字)作为test函数中的参数传递时,实现这一点的唯一方法是在Options接口上声明一个属性includes?: null;或类似的东西吗?