是否有可能限制param
不接受字符串,数组等?Typescript没有属性的限制类型接受字符串或数组
interface foo {
a?: number;
b?: string;
}
function baz(param: foo) {
}
baz("hello");
是否有可能限制param
不接受字符串,数组等?Typescript没有属性的限制类型接受字符串或数组
interface foo {
a?: number;
b?: string;
}
function baz(param: foo) {
}
baz("hello");
你可以做这样的事情,使baz
接受至少一个对象:
interface foo {
a?: number;
b?: string;
}
interface notAnArray {
forEach?: void
}
type fooType = foo & object & notAnArray;
function baz(param: fooType) {
}
baz("hello"); // Throws error
baz([]); // Throws error
fooType
这里是一个Intersection Type。
是不是有点欺骗?你迫使参数必须是一个对象。 –
@MuratK:那不是OP想要的吗?但我会倾向于不把它变成一种类型,只是'功能baz(param:foo&object)' –
值得注意的是'object'类型是非常新的,你需要TypeScript 2.2来使用它。 –
你为什么在意?如果它适合你的界面,你为什么介意它是一个字符串还是一个对象? –
我们有一个错误,我们传递对象的属性而不是对象,并且打字稿编译得很好。 – user3233089
这是一个值得关注的问题。 –