当前位置:  开发笔记 > 编程语言 > 正文

打字稿类型转换不起作用

如何解决《打字稿类型转换不起作用》经验,为你挑选了2个好方法。

我是TypeScript的新手.我开始写一本名为Typescript Revealed(Pub Feb.2013)的书.在第2章中有一个名为"Casts"的部分,其中包含以下示例:

var a : int = SomeNumberAsAString;

我试着应用这个例子,如下:

var SomeNumberAsAString = "1000";
var a: int = SomeNumberAsAString;

但编译器给了我一个错误:

hello.ts(2,8):错误TS2304:找不到名称'int'.
hello.ts(2,15):错误TS2304:找不到名称'int'.

我想知道如何进行此演员表,或者是否更改了Typescript的规范?



1> basarat..:

(Pub 2月2013)

那本书很.它number现在叫.

var SomeNumberAsAString = "1000";
var a: number = SomeNumberAsAString;

此断言也非常不安全,我不会在生产代码中这样做.但它得到了重点:)

更多

有关断言的最新书籍章节:https://basarat.gitbooks.io/typescript/content/docs/types/type-assertion.html



2> shabunc..:

我已经阅读了@ basarat的答案,并决定发布我自己的答案,因为我坚信还有一些解释空间.

请注意,施法不会产生数字.实际上它将允许您的代码被编译(因此您将通过所有静态类型检查)但它不会是javascript中的数字.考虑这段代码:

let str = "1000";
let a: number = str;
let b: number = parseInt(str); //or just let b = parseInt(str)

console.log(typeof a); // string
console.log(typeof b); // number

我几乎无法想象 - ab-case 相比,-case 是有益的.我只使用parseInt或parseFloat或Number,无论多适合什么.铸造看起来很聪明,但你必须100%确定你应该通过这个成语实现什么.

在大多数情况下,你可能不希望实现这一点)

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有