与 Typescript 的使用混淆

IT技术 reactjs typescript
2021-05-07 06:58:02

我在用 React 学习 Typescript 时遇到了一些困惑,为什么限制开发人员仅将特定类型分配给特定变量很重要。此外,正如我所看到的,Typescript 是关于使用验证我们可以分配给变量的确切类型(我希望我是对的:))。所以,让我解释一下我的意思,比如说,我们有以下代码:

interface Props {
    color?: ColorTypes | 'inherit';
    variant?: TypographyVariant; 
}

此外, TypographyVariant 表示此代码: export declare type TypographyVariant = 'h0' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'subtitle1' | 'subtitle2' | 'body1' | 'body2' | 'body3' | 'caption';

问题是,例如,确保“variant”属性只接受“h0”的真正好处是什么?'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | '字幕1' | '字幕2' | 'body1' | 'body2' | 'body3' | '标题'。与“颜色”属性相同。我只是无法向自己解释为什么我们应该关心验证并确保只能分配某些类型?如果我们不为变量分配类型注释会怎样。如果我们不在 Typescript 中使用 Type 注释,那么我们可以分配任何不会触发任何错误的值,并且该错误仅在运行时发现,这会让我们浪费时间并且可能找不到遗漏的错误,这是真的吗?真的吗?

1个回答

人们使用 TypeScript(以及一般的类型语言)有几个原因:

  • 尽早发现编程错误。如果唯一的有效值是'a''b''c',但有人分配'q'给变量/属性,那就是编程错误。如果一个变量应该包含一个数字,但你给它分配了一个字符串,那就是一个编程错误。您可以在 IDE 中工作或使用 TypeScript 编译时及早收到有关这些错误的通知,或者您可以稍后在程序未正确运行时发现这些错误。

  • 它使编码工具(如 IDE)能够在您分配给变量/属性时提供适当的建议。举例来说,如果你要指定只接受一个属性'a''b'或者'c',你的IDE可以告诉你包含列表'a''b''c'即使它不是一个有限列表,如果 IDE 可以向您显示需要的是数字而不是字符串,那也是有用的信息。

(该列表可能不完整,但我认为这是两大列表。)

分配类型的成本是否值得这些好处取决于您和您的团队。有些人喜欢它。有些人没有。