写了一个复杂的函数定义,怎么搞里面的类型都是 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 有时候真抓狂。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.