我有一个函数(func)的类(MyClass)与可选参数。可选参数(MyInterface)的类型只有可选属性。typescript可选参数类型检查
我希望编译器错误,当我用像一个数字原语调用foo。但事实并非如此。这是为什么?有没有办法告诉类型系统将其标记为错误?
interface MyInterface {
foo?: string
}
class MyClass {
func(b?: MyInterface) : void {}
}
let c = new MyClass();
c.func();
c.func({ foo: 'bar' });
c.func({ foo: 30 }); // compiler error: OK
c.func({});
c.func(60); // No compiler error: Not what I expect
听起来像鸭子打字。 TypeScript是否有类型的鸭子打字?与其中空类与另一空类不同的java不同。 – stefku
是的,对象不需要实际地明确实现一个接口来属于该接口。属性只需要匹配。请注意,使用'MyInterface'要求,您将无法将'60'视为'MyClass.prototype.func'中的数字。 –