TypeScript能告诉我代码库中的哪些字符串是;不安全;?

TypeScript能告诉我代码库中的哪些字符串是;不安全;?,typescript,Typescript,我们的TypeScript代码库中有“安全”字符串: button.on('click', () => {}); // mistyping 'click' is an error 但也有不安全的字符串: _.omit(obj, 'a'); // no error if I mistype 'a' 有没有办法列出这样的字符串?我想TypeScript对它很了解,但我不确定是否可以从中挖掘出来。您可以定义一个只包含安全值的类型: export type SafeValue = 'foo'

我们的TypeScript代码库中有“安全”字符串:

button.on('click', () => {}); // mistyping 'click' is an error
但也有不安全的字符串:

_.omit(obj, 'a'); // no error if I mistype 'a'

有没有办法列出这样的字符串?我想TypeScript对它很了解,但我不确定是否可以从中挖掘出来。

您可以定义一个只包含安全值的类型:

export type SafeValue = 'foo' | 'bar' | 'baz';

export function omit(param: SafeValue) {
   ...
}

omit('a'); // error
如果您想知道“a”是否是
obj
的属性,可以执行以下操作:

export function omit<T>(object: T, property: keyof T) {
  payload[value]; // this statement is safe
}
Person的声明
keyof
将等于
“name”|“age”

 const person = new Person();

 omit<Person>(person, 'age'); // won't emit any error

 omit<Person>(person, 'paws'); // will emit an error:
const person=new person();
省略(人,“年龄”);//不会发出任何错误
省略(人,“爪子”);//将发出一个错误:
“paws”类型的参数不能分配给“name”|“age”类型的参数


我知道这样的代码是可以写的,问题是是否可以“查询”TypeScript中的弱类型字符串。你说的“弱类型字符串”是什么意思?我不知道你在问什么,显然回答的人也不知道。您能否提供一份清单,以便其他人了解您所说的“安全”和“不安全”,特别是“清单”的含义?例如,您希望编译器或IDE生成代码中所有函数的列表,这些函数采用
string
参数,而不是字符串文本的并集?也许这是可以给你的东西,但我怀疑你能通过按下某个按钮得到它。你完全正确,它是关于生成一个“弱类型”字符串的列表,可能通过TypeScript的编程API,可能通过eslint TypeScript,我不知道如何做,但我想扫描我们的代码库来寻找这些东西。
 const person = new Person();

 omit<Person>(person, 'age'); // won't emit any error

 omit<Person>(person, 'paws'); // will emit an error: