泛型接口数组的正确类型是什么?



如何设置路由数组的正确类型以避免错误:

TS2314: Generic type 'Route ' requires 1 type argument(s).

TS playground中的代码

interface Route<T> {
path: string
handler: () => T
}
class Router {
routes: Route[] = []
addRoute<T>(path: string, handler: Route<T>['handler']) {
this.routes.push({
path,
handler
})
}
}
const router = new Router()
router.addRoute<string>('home', () => '123')

Typescript Playground Link

interface Route<T> {
path: string
handler: () => T
}
class Router {
routes: Route<unknown>[] = []
addRoute<T>(path: string, handler: Route<T>['handler']) {
this.routes.push({
path,
handler
})
}
}
const router = new Router()
router.addRoute('foo', () => '123')
router.addRoute('bar', () => 123)
// or
class Router2<T> {
routes: Route<T>[] = []
addRoute(path: string, handler: Route<T>['handler']) {
this.routes.push({
path,
handler
})
}
}
const router2Str = new Router2<string>()
router2Str.addRoute('baz', () => '123')
const router2Num = new Router2<number>()
router2Num.addRoute('quiz', () => 123)

最新更新