写了一个复杂的函数定义,怎么搞里面的类型都是 unknown,我把问题部分最简化成这样:
declare function create<A>(def: {
a: () => A
b: (a: A) => void
}): A
let s = create({
a: () => { return { result: () => 'ok' } },
b: (a) => {},
})
let s2 = create({
a: () => { return { result() { return 'ok' } } },
b: (a) => {},
})
你看这个 s 和 s2 定义是几乎一样的吧,一个出来是正常的类型 { result: () => "ok"; } 另一个是unknown。
谁知道这里到底有什么微妙的东西的里面?
js 怎么搞就这么点东西没有不明明白白的,ts 有时候真抓狂。
