假设:
interface A
{ a : number
, b : string }
interface O // optional additional field
{ a : number
, opt? : string };
我希望A
不能被视为O
的扩展名。我理解opt
字段是可选的,但我将它解释为" O的值选择为opt,但扩展O的接口必须具有完全相同的基本结构"。这个假设我错了吗?
Typescript似乎这么认为,至少考虑到这个测试(仅对Typescript 1.8 +有效):
function assertSubType<T extends U, U>(x: T, y: U):void { };
assertSubType(<A>null,<O>null); // does not give an error!
PS:我已经提出了同样的问题here,但随后我发现这可能更像是我对打字稿原则的误导。