ts 类型定义?

定义一个类型
条件1:变量类型是一个字符串。
条件2:变量值不是 get

"typescript": "~5.2.2"

阅读 690
3 个回答
type MyString = string & Exclude<string, "get">;
type C<T> = T extends string ? (T extends 'get' ? never : T) : never

写了这样个工具类型,不清楚符不符合你的需要

我不太赞成用类型约束来解决逻辑问题。

string 是一种类型,而 "get" 是一个值,对值的判断应该用逻辑来进行,就像

if (name === "get") {
    throw new Error();
}

当然要说 "get" 也是一种更细分的类型,也没毛病。问题是有多少情况我们需要把“黄白相间四爪都是白毛的猫”做为一个类型划分而不是直接用“猫”来划分呢(不能说没有,但真的很少很少)?也许有人要说是写寻猫启事的时候……实际上,寻猫启事的目的是精确匹配,就算找到相近的,也需要每个属性去识别。无非就是人家抓来一只黑猫的时候,第一个属性比对就失败中断了而已。

logo
Microsoft
子站问答
访问
宣传栏