typescript Any

简介: typescript Any

有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any类型来标记这些变量:

let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean

在对现有代码进行改写的时候,any类型是十分有用的,它允许你在编译时可选择地包含或移除类型检查。 你可能认为 Object有相似的作用,就像它在其它语言中那样。 但是 Object类型的变量只是允许你给它赋任意值 - 但是却不能够在它上面调用任意的方法,即便它真的有这些方法:

let notSure: any = 4;
notSure.ifItExists(); // okay, ifItExists might exist at runtime
notSure.toFixed(); // okay, toFixed exists (but the compiler doesn't check)
 
let prettySure: Object = 4;
prettySure.toFixed(); // Error: Property 'toFixed' doesn't exist on type 'Object'.

当你只知道一部分数据的类型时,any类型也是有用的。 比如,你有一个数组,它包含了不同的类型的数据:

let list: any[] = [1, true, "free"];
 
list[1] = 100;

Void

某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void

function warnUser(): void {
    console.log("This is my warning message");
}

声明一个void类型的

let unusable: void = undefined;

变量没有什么大用,因为你只能为它赋予undefinednull

Null 和 Undefined

TypeScript里,undefinednull两者各自有自己的类型分别叫做undefinednull。 和 void相似,它们的本身的类型用处不是很大:

// Not much else we can assign to these variables!
let u: undefined = undefined;
let n: null = null;

 

默认情况下nullundefined是所有类型的子类型。 就是说你可以把 nullundefined赋值给number类型的变量。

然而,当你指定了--strictNullChecks标记,nullundefined只能赋值给void和它们各自。 这能避免 很多常见的问题。 也许在某处你想传入一个 stringnullundefined,你可以使用联合类型string | null | undefined

相关文章
|
1月前
|
JavaScript 前端开发
TypeScript内置类型一览(Record<string,any>等等)(下)
TypeScript内置类型一览(Record<string,any>等等)
|
1月前
|
JavaScript
TypeScript内置类型一览(Record<string,any>等等)(中)
TypeScript内置类型一览(Record<string,any>等等)
|
1月前
|
JavaScript
TypeScript内置类型一览(Record<string,any>等等)(上)
TypeScript内置类型一览(Record<string,any>等等)
|
1月前
|
JavaScript 安全
TypeScript中any unkown never的区别
TypeScript中any unkown never的区别
|
JavaScript 安全
TypeScript 中你不一定知道的 top types,在用 any 之前先试试 unknown?
最近发现了一本 TS 相关的电子书,Tackling TypeScript[1]。随便翻看了一下,就发现了自己很感兴趣的一个问题,并且也经常听说在国内面试中出现。
|
JavaScript
Vue+TS/Typescript:Property does not exist on type ‘(() => any) | ComputedOptions<any>‘
Vue+TS/Typescript:Property does not exist on type ‘(() => any) | ComputedOptions<any>‘
241 0
|
JavaScript 安全
Typescript any、unknown、 void、undefined 和 never 类型
本文介绍了 Typescript 的 `any` 类型和 `unkonw` 类型,它们都简化了在 TS 中对类型的使用,方便快速开发,相比于 `any`,`unkonw` 类型更加安全。 然后介绍了 Typescript 的几个特殊的类型,`void`,`undefined`,`never`,它们主要应用在几个特定的场景,比较容易区分。
634 0
|
JavaScript 编译器
TypeScript里的类型为any和泛型的区别
TypeScript里的类型为any和泛型的区别
226 0
|
JavaScript
nodejs 不支持 typescript (...paramName:any[])剩余参数。变相支持方式。
node es6 变相实现支持ts的剩余参数实现方式 //.ts method assign(to: any, options?: AssignOptions, ...forms: any[]){} //tsc 编译为es6的js assign(to, options, ...forms) { } 如上的代码在node run起来之后报错。
945 0
|
22天前
|
JavaScript 前端开发 Java
TypeScript 类型兼容性
TypeScript 类型兼容性