javascript - typescript :使用 let (最佳实践)

标签 javascript typescript

我正在使用 TypeScript,我是新手,所以我对声明变量有疑问。

当我们声明一个变量时,我们使用let name: type = value。好的,我总是分配变量的类型:如果我想要一个字符串,我声明为 string, bool 值和数字也是如此。我看到了 any 类型,它使变量成为任何类型。

问题是:如果我将变量声明为数字,是否需要使用let myNumber: number = 23;?有必要说类型是数字吗?

如果我不这样做,并执行 typeOf(myNumber) 它返回数字,但对于 TypeScript 是 number 或者是 any

最好的做法是在为变量赋值时始终设置类型,否则它不重要吗?

最佳答案

Typescript 将避免创建 any 类型的变量。当您在 tsconfig.json 中将选项 noImplicityAny 设置为 true 时,如果您没有指定类型,它甚至会给您一个错误而 Typescript 只能将类型设置为 any

一般来说,当您在示例中的 let 中指定类型时...

let myNumber: number = 23;

...您显式设置了类型。这意味着您清楚地传达了将此变量设为 number 的意图。当你分配一个非数字值时,你会得到一个错误。用显式类型声明所有变量没有错,因为这只会提高代码的清晰度。

另一种选择是隐式键入您的变量。只有在声明时为变量赋值时才能做到这一点:

let myNumber = 23;

由于您为变量分配了一个数字文字,Typescript 可以推断变量的类型并将其视为一个数字。在某些情况下,覆盖推断很有用,例如联合类型:

let myNumberOrText: number | string = 23;

当您将 noImplicitAny 设置为 true 时,禁止对 any 进行隐式键入。所以……

let myAny = { FirstName: "John", LastName: "Doe" };

...将导致错误,因为它会隐式键入 any。仍然允许显式版本。所以你可以写...

let myAny: any = { FirstName: "John", LastName: "Doe" };

...尽管在 Typescript 中您最好声明一个类或接口(interface)并将其用于键入(假设您已声明类型 Person):

let myPerson: Person = { FirstName: "John", LastName: "Doe" };

Typescript 的全部意义在于将静态类型引入 JavaScript。如果您使用 any 类型声明您的变量,您将无法从静态类型中获益,您可以只使用纯 JavaScript。

关于javascript - typescript :使用 let (最佳实践),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41281039/

相关文章:

javascript - 如何将自定义工具提示添加到 angular-nvd3 多条形图?

javascript - 执行不在 angularjs Controller 中的函数内部

typescript - 使用逻辑赋值时如何保持类型保护缩小?

javascript - 使用 D3.js 的 typescript 类型转换

javascript - 检查标记是否在 View 中( map ) - mapbox

javascript - Javascript 中的绑定(bind)函数在全局上下文中运行

javascript - Dojo 1.10 - 刷新 TreeView ,同时保持展开的节点状态

typescript - 如何从另一个方法创建一个方法?

node.js - Sequelize 连接和日志记录问题

javascript - 如何实现存储库以整洁架构?