ts 类型定义?

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

"typescript": "~5.2.2"

阅读 689
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
子站问答
访问
宣传栏