TypeScript 泛型能减小可用类型的范围吗
function n(a,b) {if (typeof a === "string"&& typeof b === "string") {
return 1
}
else if ( a instanceof Dirent && b instanceof Dirent) {
return 2
}
}
已知 a
和 b
只会传入 string
和 Dirent
(fs.Dirent 类) 类型, 且 a,b 类型一定相同
我想用泛型写,想有泛型约束能减少我的判断次数
不知道怎么能使用泛型 只包含 string
和 Dirent
类型
用不着泛型,直接利用 TS 重载就可以,甚至可以约束返回值一定是 1
或者 2
。
typescript">function n(a: string, b: string): 1;function n(a: Dirent, b: Dirent): 2;
function n(a, b) {
if (typeof a === "string" && typeof b === "string") {
return 1;
} else if ( a instanceof Dirent && b instanceof Dirent) {
return 2;
}
throw new Error('Invalid Arguments!');
}
用函数重载就行了
interface Dirent {name: string;
}
type IParmas = Dirent | string;
function n<T extends IParmas>(a: T, b: T) {
if (typeof a === "string" && typeof b === "string") {
return 1
}
else if ( a instanceof Dirent && b instanceof Dirent) {
return 2
}
}
回答
以上是 TypeScript 泛型能减小可用类型的范围吗 的全部内容, 来源链接: utcz.com/a/110025.html