Typescript 抽象方法不继承参数类型

und*_*ned 8 typescript

我有以下代码:

abstract class Foo<T extends { data: string }> {
  abstract doSomething(params: T): void;
} 


class Baz extends Foo<{ id: string; data: string }> {
   doSomething(params) {}
}
Run Code Online (Sandbox Code Playgroud)

我的期望是,在实现该doSomething方法时,它会自动推断出paramsas T,但它将其推断为any。我错了吗?

Ric*_* Mo 0

通过扩展,编译器只是检查派生类是否可分配给基类,您可以自由设计派生类,只要它可分配给基类即可。

想象一下你不扩展,只是写一个普通的类。doSomething(param)隐含地意味着doSomething(param:any). 即使你延伸,这个含义也不会改变。由于(any) => void可分配给({ id: string; data: string }) => void,所以一切都很好。编译器不会做额外的工作。