Kua*_*uan 15 casting typescript
我是TypeScript的新手.我开始写一本名为Typescript Revealed(Pub Feb.2013)的书.在第2章中有一个名为"Casts"的部分,其中包含以下示例:
var a : int = <int>SomeNumberAsAString;
我试着应用这个例子,如下:
var SomeNumberAsAString = "1000";
var a: int = <int>SomeNumberAsAString;
Run Code Online (Sandbox Code Playgroud)
但编译器给了我一个错误:
hello.ts(2,8):错误TS2304:找不到名称'int'.
hello.ts(2,15):错误TS2304:找不到名称'int'.
我想知道如何进行此演员表,或者是否更改了Typescript的规范?
bas*_*rat 29
(Pub 2月2013)
那本书很旧.它number现在叫.
var SomeNumberAsAString = "1000";
var a: number = <number><any>SomeNumberAsAString;
Run Code Online (Sandbox Code Playgroud)
此断言也非常不安全,我不会在生产代码中这样做.但它得到了重点:)
有关断言的最新书籍章节:https://basarat.gitbooks.io/typescript/content/docs/types/type-assertion.html
我已经阅读了@ basarat的答案,并决定发布我自己的答案,因为我坚信还有一些解释空间.
请注意,<number><any>施法不会产生数字.实际上它将允许您的代码被编译(因此您将通过所有静态类型检查)但它不会是javascript中的数字.考虑这段代码:
let str = "1000";
let a: number = <number><any>str;
let b: number = parseInt(str); //or just let b = parseInt(str)
console.log(typeof a); // string
console.log(typeof b); // number
Run Code Online (Sandbox Code Playgroud)
我几乎无法想象 - a与b-case 相比,-case 是有益的.我只使用parseInt或parseFloat或Number,无论多适合什么.<T><any>铸造看起来很聪明,但你必须100%确定你应该通过这个成语实现什么.
在大多数情况下,你可能不希望实现这一点)
| 归档时间: |
|
| 查看次数: |
26123 次 |
| 最近记录: |