我有以下情况:
interface Foo<GenericA, GenericB> {}
我想声明一个类型为Foo的变量,但只指定第二个泛型,例如:
const foo: Foo<GenericBType>;
只有在我写代码的时候才能做到这一点
const foo: Foo<unknown, GenericBType>;
其实也不算太糟糕,但总感觉不太对劲,因为我只想使用第二种类型,对第一种完全不感兴趣。
有没有其他更简洁的写法呢?
PS:这是关于expressjs类型的问题。我想给Request对象打上类型,但我只想考虑Query参数的类型,它是Request类型中第四个泛型:
interface Request<
P = core.ParamsDictionary,
ResBody = any,
ReqBody = any,
ReqQuery = core.Query,
Locals extends Record<string, any> = Record<string, any>
> extends core.Request<P, ResBody, ReqBody, ReqQuery, Locals> {}
所以我需要写类似这样的代码:
req: Request<unknown, unknown, unknown, Foo>
这真的不太好看...
Foo
创建一个别名。请参考此示例。 - captain-yossarian from Ukrainetype Foo<A=unknown, B=unknown>
但是这样你需要将第二个参数也变为可选。这些是此逻辑的一般规则。 - captain-yossarian from Ukraine_
或*
。我认为使用unknown
是处理缺少泛型的最佳方式。 - captain-yossarian from Ukraine