intrinsic 是 typescript 引入的一个关键字,就如它的含义一样,是TS 内部 用到的。和其它TS提供的内置类型一样,Uppercase 这几个内置类型也是为了方便类型书写,但是专门针对字符串类型<字符串字面量、模板字符串>而提供的。它们的共同特点是,用它们生成的类型涉及到了值的转换,而不是类型的转换,而这在TS里通过已有的类型书写方式是无法表达、也不太适合去表达的。所以 TS 只能以内置关键字 instrinsic 来通过编译期来实现,https://levelup.gitconnected.com/intrinsic-types-in-typescript-8b9f814410d 可以看看这篇搜到的文章。有了这几个类型,常用到的字符串类型的转换也基本够用了,但字符串本身用来当类型太特殊了,涉及到值的更改还能让其成为一个新类型,这有点强TS所难,举个例子:type SomeStringContainsA = "abc" | "abca" | "abcd"; type SomeStringUppercaseAllA = string; // 这里如果我想严格约束该怎么写呢? function upperCaseA(input: SomeStringContainsA):SomeStringUppercaseAllA{ return input.split("").map((ch) => { if(ch === 'a')return 'A'; return ch; }).join(''); } let input: SomeStringContainsA = "abca"; let output: SomeStringUppercaseAllA = upperCaseA(input);
intrinsic
是 typescript 引入的一个关键字,就如它的含义一样,是TS内部
用到的。和其它TS提供的内置类型一样,Uppercase
这几个内置类型也是为了方便类型书写,但是专门针对字符串类型<字符串字面量、模板字符串>而提供的。它们的共同特点是,用它们生成的类型涉及到了值
的转换,而不是类型
的转换,而这在TS里通过已有的类型书写方式是无法表达、也不太适合去表达的。所以 TS 只能以内置关键字instrinsic
来通过编译期来实现,https://levelup.gitconnected.com/intrinsic-types-in-typescript-8b9f814410d 可以看看这篇搜到的文章。有了这几个类型,常用到的字符串类型的转换也基本够用了,但字符串本身用来当类型太特殊了,涉及到值的更改还能让其成为一个新类型,这有点强TS所难,举个例子: