如果我有一个数组a,其中每个元素都是一个由两个属性first和组成的对象second,我应该如何声明`a 的类型,以便始终满足以下条件?
ForAll(x in a)(type(x.first) == T iff type(x.second) == (T => string))
Run Code Online (Sandbox Code Playgroud)
例如,我想确保它a[3].second(a[3].first)是类型安全的。
interface Instruction {
promise: Promise<unknown>,
callback?: ($html: JQuery, data: unknown ) => void
}
const arr: Instruction[] = [
{ promise: Promise.resolve({ foo: 'bar' }), callback: ($html, data) => console.log(data.foo) },
{ promise: Promise.resolve({ bar: 'foo' }), callback: ($html, data) => console.log(data.bar) }
];
Run Code Online (Sandbox Code Playgroud)
鉴于上述情况,我希望 TypeScript 能够识别回调函数中的 data 参数与 Promise 的解析类型相同。
如果它是独立的,我可以这样做:
interface Instruction<T> {
promise: Promise<T>,
callback?: ($html: JQuery, data: T) => void
}
Run Code Online (Sandbox Code Playgroud)
但是,我将如何定义数组,T每行的含义可能有所不同?