首页 > 解决方案 > 带有签名的打字稿箭头函数接受错误的参数

问题描述

考虑类型:

type GenericFunction = <T>(props: Array<T>) => void

和箭头功能:

const test: GenericFunction = <X>(props: X) => {
let dd: X }

尽管类型定义为参数,但为什么test函数接受作为 参数?XGenericFunctionArray<T>

标签: typescriptgenericsarrow-functions

解决方案


有一些类型X会满足 的签名GenericFunction,这就是编译器不给出错误的原因。现在只有一个隐式约束,它X必须是数组类型。

仅当您添加X与此隐式约束冲突的约束时,您才会收到错误:

// this gives a compile error
const test: GenericFunction = <X extends number>(props: X) => {};

推荐阅读