Typescript:类不从接口继承类型吗?

时间:2020-11-01 17:51:47

标签: javascript typescript inheritance

我想在客户端和服务器之间共享一些端点类型:

type EndpointParams = {
    '/user': { userId: number },
    '/post': { postId: number },
};

在服务器上,我想定义端点控制器:

interface Endpoint<T extends keyof EndpointParams> {
    path: T;
    handleRequest(params: EndpointParams[T]): void;
}

class UserEndpoint implements Endpoint<'/user'> {
    path = '/user' as const;

    handleRequest({ userId }) {}
}

但是,我得到了Binding element 'userId' implicitly has an 'any' type.。 TS为什么不自动找出userId是一个数字?它不应该从界面上得到它吗?

TS游乐场:https://www.typescriptlang.org/play?#code/C4TwDgpgBAogdgEzAewJZ2ABQIYCdsC2AzlALxQDeAUFLVAOQD0ArkRLvQFyVSvsCSCbnGYEARuygBfADQ06TFEWBceS4IOGiJuaXKkBuKlXTB2AM2wBjaACFsbeEjQYAPABUoEAB5nEJAGsIEGRzWEQUUxx8YgA+SnlaMGxgAAtudyM6KFTsRAAbCAAlCABHZghlAApkmKJuJ0iMaMIiAG13AF0ASm4ANzQEIyljK3yHEgBVNlxGl2AoVAIwQoIIDBJ7Rwj51yY+DnjqbOS0sgYWGfooBygrZDhlI0ScvIRCkvLK4CqKXhnBNJupQRlIgA

其他一些相关问题:

  1. 是否可以省略as const?没有它,我得到Type 'string' is not assignable to type '"/user"'.
  2. 是否可以像函数一样推断通用参数?
  3. 是否可以将path设为静态? AFAIK接口不支持静态。

0 个答案:

没有答案