【发布时间】:2021-12-21 07:26:49
【问题描述】:
我想知道为什么我可以在configure() 方法中提供与class 不同的通用接口?在第一个no error 示例中,我提供IType<Args1> 作为MyClass 的泛型类型,然后我可以简单地用缺少道具的IArgs2 覆盖它,我没有收到任何错误。有什么办法可以保证类型完全一样吗?
interface IArgs1 {
a: string;
b: string;
}
interface IArgs2 {
a: string;
}
interface IArgs3 {
d: string;
}
interface IType<T> {
configure(args: T): void
}
// no error - even if 'b' is missing from IArgs2
class Class implements IType<IArgs1> {
configure(args: IArgs2) {}
}
// error - because it's missing all IArgs1 attributes
class MyClass implements IType<IArgs1> {
configure(args: IArgs3) {}
}
【问题讨论】:
-
configure(args: IArgs2)不会失败,如果你将它传递给带有其他属性的对象(a除外),但如果你不传递它configure(args: IArgs3)将失败d
标签: typescript