alb*_*ert 4 javascript typescript
我正在使用TypeScript而且我是新用的,所以我有一个关于声明变量的问题.
当我们声明我们使用的变量时let name: type = value.好的,我总是分配变量的类型:如果我想要一个我声明的字符串string,与布尔值和数字相同.我看到了any制作任何类型变量的类型.
问题是:如果我将变量声明为数字,是否需要使用let myNumber: number = 23;?有必要说类型是一个数字?
如果我不这样做,并做一个typeOf(myNumber)它返回数字,但对于TypeScript是number或是any?
最好的做法是在为变量赋值时始终设置类型,或者它不重要?
Typescript将避免生成类型的变量any.当您将选项设置noImplicityAny到true您的tsconfig.json,它甚至会给予你的时候你没有指定类型,打字稿只能设置类型的错误any.
一般来说,当您let在示例中指定类型时...
let myNumber: number = 23;
Run Code Online (Sandbox Code Playgroud)
...你明确地设置了类型.这意味着你清楚地传达了你制作这个变量的意图number.分配非数字值时,您将收到错误.使用显式类型声明所有变量没有任何问题,因为这只会提高代码的清晰度.
另一种选择是隐式输入变量.只有在声明时为变量赋值时才能执行此操作:
let myNumber = 23;
Run Code Online (Sandbox Code Playgroud)
由于您为变量指定了数字文字,因此Typescript可以推断变量的类型,并将其视为数字.在某些情况下,覆盖推理是有用的,例如对于联合类型:
let myNumberOrText: number | string = 23;
Run Code Online (Sandbox Code Playgroud)
当你noImplicitAny设置true为时,隐式输入any被禁止.所以...
let myAny = { FirstName: "John", LastName: "Doe" };
Run Code Online (Sandbox Code Playgroud)
...会导致错误,因为它会隐式输入any.仍然允许显式版本.所以你可以写...
let myAny: any = { FirstName: "John", LastName: "Doe" };
Run Code Online (Sandbox Code Playgroud)
...虽然在Typescript中你最好声明一个类或接口并用它来输入(假设你已经声明了一个类型Person):
let myPerson: Person = { FirstName: "John", LastName: "Doe" };
Run Code Online (Sandbox Code Playgroud)
Typescript的重点是向JavaScript引入静态类型.如果使用类型声明变量any,则静态类型没有任何优势,您可以使用纯JavaScript.
| 归档时间: |
|
| 查看次数: |
555 次 |
| 最近记录: |