typescript - TypeScript 可以告诉我代码库中的哪些字符串是 "unsafe"吗?

标签 typescript

我们的 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 类:

export class Person {
   name: string;
   age: number;
}

语句 keyof Person 将等于 'name' | “年龄”

 const person = new Person();

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

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

Argument of type '"paws"' is not assignable to parameter of type '"name" | "age"'

关于typescript - TypeScript 可以告诉我代码库中的哪些字符串是 "unsafe"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58326975/

相关文章:

javascript - SPServices 的 TypeScript 定义文件

reactjs - 我想使用react和ant.design(antd)验证输入的密码

angular - 如何将 jwt-decode 类型定义导入 Typescript (Ionic 2)

angular - ChangeDetectionStrategy.OnPush 打破了 ControlValueAccessor 的禁用状态

javascript - Spring Boot + Angular 应用程序

javascript - 在 highcharts-react-official 上定义和应用主题

angular - 如何将 PayPal 快速结帐集成到 angular2 typescript 项目中

angular - 为什么即使模板正在访问私有(private)属性,Angular AOT 也会编译?

javascript - 使用 VSCODE 进行调试无法在 Webpack + Typescript + 无框架中工作

typescript - SignalR 客户端在更新到核心 3.1 后不工作