Typescript 类型脚本排除泛型类型

Typescript 类型脚本排除泛型类型,typescript,Typescript,这是一个最小的可重复的例子 类型值={} 键入Something={} 函数isValid(a:Exclude){} 功能选择器(obj:T){ isValid(obj) } 导出{} Typescript 3.8.3拒绝使用等质量(obj)表达式 类型“某物”不可分配给类型“排除” 但有些东西是可分配的!这项工作: 让我们:Something={} 是否有效 错误消息不是一个bug吗?如何使isValid接受除值以外的任何类型?为isValid的参数键入不匹配项 type Somethi

这是一个最小的可重复的例子

类型值={}
键入Something={}
函数isValid(a:Exclude){}
功能选择器(obj:T){
isValid(obj)
}
导出{}
Typescript 3.8.3拒绝使用等质量(obj)表达式

类型“某物”不可分配给类型“排除”
但有些东西是可分配的!这项工作:

让我们:Something={}
是否有效

错误消息不是一个bug吗?如何使isValid接受除值以外的任何类型?

为isValid的参数键入不匹配项

type Something {}

function isValid<T>(a: T) { }

function selecter<T extends Something>(obj: T) {
  isValid(obj)
}
键入某物{}
函数是有效的(a:T){}
功能选择器(obj:T){
isValid(obj)
}

键入isValid参数的未匹配项

type Something {}

function isValid<T>(a: T) { }

function selecter<T extends Something>(obj: T) {
  isValid(obj)
}
键入某物{}
函数是有效的(a:T){}
功能选择器(obj:T){
isValid(obj)
}

您能提供
isEqual
签名吗?或者你的意思是
选择器中的
是有效的(…)
,对不起!我的意思是说,这是有效的。已编辑。您能提供
isEqual
签名吗?或者你的意思是
选择器中的
是有效的(…)
,对不起!我的意思是说,这是有效的。编辑。使用
Something
作为接口,两个
isValid
语句都无法编译<代码>类型“Something”不可分配给类型“never”。
好的,我明白了,您看到的是类型未匹配。您正在将类型为T的obj传递到isValid。但是在isValid的函数定义中,您说它的参数是Exclude类型。使用
Something
作为接口,两个
isValid
语句都无法编译<代码>类型“Something”不可分配给类型“never”。
好的,我明白了,您看到的是类型未匹配。您正在将类型为T的obj传递到isValid。但是在isValid的函数定义中,您说它的参数是Exclude类型。