typeScript基础(2)_any任意值类型和类型推论

简介: 本文介绍了TypeScript中的`any`任意值类型,它可以赋值为其他任何类型。同时,文章还解释了TypeScript中的类型推论机制,即在没有明确指定类型时,TypeScript如何根据变量的初始赋值来推断其类型。如果变量初始化时未指定类型,将被推断为`any`类型,从而允许赋予任何类型的值。

any任意值类型

可以赋值其他任意类型:
ts:

// 任意值 ==》任意类型
let myName :any = 'zjq';
myName=123;
myName=false;
myName=()=>'我是函数返回值';

js: 箭头函数也变成了es5的形式:

// 任意值 ==》任意类型
var myName = 'zjq';
myName = 123;
myName = false;
myName = function () { return '我是函数返回值'; };

不写类型也会默认给任意类型,也同样可以转成js

let myName ;
myName = 123;
myName = false;
myName = () => '我是函数返回值';

然而有个问题,当我们使用这样的时候就会报错:

// 任意值 ==》任意类型
let myName ='qwe';
myName = 123;
myName = false;
myName = () => '我是函数返回值';

这源于类型推论。

类型推论

如果没有明确的指定类型,那么 TypeScript 会依照类型推论(Type Inference)的规则推断出一个类型。

这是因为上面的

// 任意值 ==》任意类型
let myName ='qwe';
myName = 123;
myName = false;
myName = () => '我是函数返回值';

类型推论等价于

// 任意值 ==》任意类型
let myName :string ='qwe';
myName = 123;
myName = false;
myName = () => '我是函数返回值';

后面的赋值不是string了,所以会报错;但是我们:

let myName ;
myName = 123;
myName = false;
myName = () => '我是函数返回值';

如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 any 类型而完全不被类型检查

这样就不会报错:因为在ts中类型推论给给一个any任意值类型;类型推论等价于

let myName:any ;
myName = 123;
myName = false;
myName = () => '我是函数返回值';

参考:https://www.bookstack.cn/read/typescript-tutorial-202005/basics-type-inference.md

目录
相关文章
|
17天前
|
JavaScript 前端开发 安全
深入理解TypeScript:增强JavaScript的类型安全性
【10月更文挑战第8天】深入理解TypeScript:增强JavaScript的类型安全性
27 0
|
22小时前
|
JavaScript 开发者
在 Babel 插件中使用 TypeScript 类型
【10月更文挑战第23天】可以在 Babel 插件中更有效地使用 TypeScript 类型,提高插件的开发效率和质量,减少潜在的类型错误。同时,也有助于提升代码的可理解性和可维护性,使插件的功能更易于扩展和升级。
|
12天前
|
JavaScript 前端开发
TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第11天】TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!
|
15天前
|
JavaScript 前端开发 安全
TypeScript【基础类型】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第9天】TypeScript【基础类型】超简洁教程!再也不用看臭又长的TypeScript文档了!
|
17天前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与最佳实践
【10月更文挑战第8天】深入理解TypeScript:类型系统与最佳实践
|
17天前
|
移动开发 JavaScript 前端开发
TypeScript:数组类型&函数使用&内置对象
本文介绍了 TypeScript 中的数组类型、对象数组、二维数组、函数、函数重载、内置对象等概念,并通过代码示例详细展示了它们的使用方法。还提供了一个使用 HTML5 Canvas 实现的下雨效果的小案例。
|
17天前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与实用技巧
【10月更文挑战第8天】深入理解TypeScript:类型系统与实用技巧
|
2月前
|
JavaScript
typeScript进阶(9)_type类型别名
本文介绍了TypeScript中类型别名的概念和用法。类型别名使用`type`关键字定义,可以为现有类型起一个新的名字,使代码更加清晰易懂。文章通过具体示例展示了如何定义类型别名以及如何在函数中使用类型别名。
36 1
typeScript进阶(9)_type类型别名
|
17天前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与实用技巧
【10月更文挑战第8天】深入理解TypeScript:类型系统与实用技巧
|
2月前
|
JavaScript
typeScript基础(5)_对象的类型-interfaces接口
本文介绍了TypeScript中接口(interfaces)的基本概念和用法,包括如何定义接口、接口的简单使用、自定义属性、以及如何使用`readonly`关键字定义只读属性。接口在TypeScript中是定义对象形状的重要方式,可以规定对象的必有属性、可选属性、自定义属性和只读属性。
38 1