简体   繁体   English

请解释类型断言

[英]Please explain type assertion

// Type Assertion
let value: any = "Asim Hussain";
let len: number = (<string>value).length;

I don't really understand this.我真的不明白这一点。 Please explain!请解释!

let value: any = "Asim Hussain";

This lets the variable value to be in any kind of type.这让变量value可以是任何类型的。 It can be an integer, string, array, object.. Well, any thing!它可以是整数、字符串、数组、对象……好吧,任何东西!

let value: any = "Asim Hussain"; // OK

value = 0; // OK
value = []; // OK

let len: number = (<string>value).length;

This forces the variable len to be in the number type, which only allows number s such as 0, 0.233, etc.这会强制变量len为数字类型,它只允许数字s,例如 0、0.233 等。

let value: any = "Asim Hussain;" 
let len: number = (<string>value).length;

len = "213"; // Error
len = 213; // OK
len = value; // Error
len = value.length; // OK

The .length function returns a number, which is what the varable desires. .length函数返回一个数字,这是变量想要的。

let value: any = "Asim Hussain";
The variable value can contain anything (type any )变量value可以包含任何内容(输入any

let len: number = (<string>value).length;
The variable len can only contain number (type number )变量len只能包含数字(类型number
The value (type any ) is cast into a type string . value (类型any )被转换为类型string
(<string>value) == value.toString() (<string>value) == value.toString()
Tha variable len is set to the length of this string .变量len被设置为这个stringlength

You're telling typescript that you know more than typescript.你告诉打字稿你知道的不仅仅是打字稿。

Example 1:示例 1:

let value: any = "Asim Hussain"
const t = value.map(s => s)

Result: Typescript won't give me any errors.结果:Typescript 不会给我任何错误。

Example 2示例 2

let value: any = "Asim Hussain"
const t = (<string>value).map(s => s)

Result: Typescript lets me know 'Property map does not exist on string'结果:打字稿让我知道“字符串上不存在属性映射”

Example 3示例 3

let value: any = "Asim Hussain"
const len = value.length

Result: The type of len would be any aswell.结果: len 的类型也可以是any

Example 3 I tell Typescript that I'm using length of a string示例 3我告诉 Typescript 我正在使用字符串的长度

let value: any = "Asim Hussain"
const len = (<string>value).length

Results: Typescript knows that len is a number since String.prototype.length returns a number.结果:Typescript 知道 len 是一个数字,因为 String.prototype.length 返回一个数字。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM