Javascript 如何在TypeScript中的d.ts文件中创建通用接口
我有一个声明类型的函数,它返回一个包含回调和对象的元组:Javascript 如何在TypeScript中的d.ts文件中创建通用接口,javascript,typescript,typescript-typings,typescript-generics,Javascript,Typescript,Typescript Typings,Typescript Generics,我有一个声明类型的函数,它返回一个包含回调和对象的元组: const fn = <T, U>(a: T, b :U) => { const inner = (a: T, b: U): Promise<T> => { return Promise.resolve(a) } const obj: { a: T, b : U} = { a, b } return [inner, obj] } 可能的接口: con
const fn = <T, U>(a: T, b :U) => {
const inner = (a: T, b: U): Promise<T> => {
return Promise.resolve(a)
}
const obj: { a: T, b : U} = { a, b }
return [inner, obj]
}
可能的接口:
const fn: FuncInterface = (a, b) => {
const inner = (a, b) => {
return Promise.resolve(a)
}
const obj = { a, b }
return [inner, obj]
}
type Tuple<T, U> = [(a: T, b: U) => Promise<T>, {a: T, b : U}]
interface FuncInterface {
<T, U>(a: T, b: U): Tuple<T, U>
}
因为在这个例子中,a
和b
将是类型any
,而不是泛型T&U
,我认为这种“干净”的想法是无效的,在这种情况下,没有办法将类型与代码完全分开。虽然ts会神奇地推断出函数是泛型的,而a和b是类型T和U,但当您想要引用函数体中的泛型类型参数时,这种神奇就会失效。您也可以让推理处理内部参数,但前提是您愿意内联内部:
...
const inner = (a, b) => {
return Promise.resolve(a)
}
...