【发布时间】:2021-03-24 18:23:57
【问题描述】:
我在我的项目中使用 typescript 泛型,但它似乎效果不佳。
示例:
interface Test<T, P> {
a?: (v: T) => P
b?: (v: P) => void
}
const fn1 = <T, P>(_config: Test<T, P>) => {}
fn1({
a: (p) => 1,
b: (p) => {},
})
我认为params 'a' 输入就像:
Test<unknown, number>.a?: ((v: unknown) => number) | undefined
但是,实际上:
Test<unknown, unknown>.a?: ((v: unknown) => unknown) | undefined
我不知道为什么,有人可以帮助我吗?谢谢。
【问题讨论】:
-
为什么你的界面中有箭头功能?
-
@Phil 他/她是否有理由不应该这样做,或者为什么不希望这样做? (真正的问题)
-
@CertainPerformance 我想我遗漏了一些东西(仍然是一个相对的 TS noob),但你通常不会定义像
a?(v: T): P这样的接口函数。还没有看到箭头语法。 编辑:好的,找到this one... TIL -
@Phil 据我了解,它们是完全等价的(你甚至可以做一些看起来很傻的事情,比如
a?: (this: string, v: T) => P),所以使用=>还是:语法只是一种风格选择 -
我假设您知道您可以明确指定类型:
fn1<unknown, number>({...})
标签: javascript typescript