【发布时间】:2020-10-03 12:06:15
【问题描述】:
我的类型:
interface Pair<FirstValue, SecondValue> {
first: () => FirstValue,
second: () => SecondValue,
toString: () => string
}
type StateRunner = <V, S>(state: S) => Pair<V, S>;
我的代码:
const Pair = <V1, V2>(v1, v2): Pair<V1, V2> => ({
first: () => v1,
second: () => v2,
toString: () => `Pair(${v1}, ${v2})`
});
const myRunner: StateRunner = (state) => Pair("hello", state);
const result = myRunner(someString, someData);
在 VSCode 中,我得到了这个:
我 100% 肯定我只是不太了解泛型(我是 TypeScript 的新手),但我认为它会将结果列为:
Pair<string, {
size: string,
active: boolean
}>
我错过了什么?我是否对 TypeScript/VSCode 期望过高?我感到困惑的主要原因是,当我直接使用Pair 时,智能感知完全知道first 和second 的返回类型是什么。
【问题讨论】:
-
除了他的回答之外,这里是@jcalz本人对TypeScript stackoverflow.com/a/60179671/795876中泛型函数的返回类型的详尽解释:)
标签: typescript visual-studio-code tuples typescript-generics