有一个长期存在的功能请求, microsoft/TypeScript#2225 ,它要求能够 interface Foo<T> extends T {...} 按照您要求的方式执行。它尚未实现(并且可能永远不会实现)。现在,您只能创建一个 extends 静态已知键 对象类型 。未指定的泛型类型参数 T 不起作用,因为编译器无法预测它将具有哪些键。
请注意,您无法通过尝试 constrain 类型参数(如) interface Foo<T extends {}> extends T {....} 。 这只会给您一个关于约束的误导性错误消息,如 microsoft/TypeScript#57037 没有静态已知键的 T 相同问题 T extends U 没有将的键限制 T 为的键 U ;它可能具有更多属性)。