首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >TypeScript-自动类型推断

TypeScript-自动类型推断

原创
作者头像
杨不易呀
发布于 2023-09-28 11:28:41
发布于 2023-09-28 11:28:41
3860
举报
文章被收录于专栏:杨不易呀杨不易呀

自动类型推断概述

不用明确告诉编译器具体是什么类型, 编译器就知道是什么类型

根据初始化值自动推断:

  • 如果是先定义在初始化, 那么是无法自动推断的
代码语言:typescript
AI代码解释
复制
let value;
value = 123;
value = false;
value = 'abc';
  • 如果是定义的同时初始化, 那么 TS 就会自动进行类型推断
代码语言:typescript
AI代码解释
复制
let value = 123;
value = 456;
value = false;
value = 'abc';
image-20211201094922211
image-20211201094922211

如上的 let value = 123; TS 会自动推断为 let value: number = 123; 所以如上的 value 变量只能存储 number 类型的数据,如上是单个数据类型的推断,接下来在来看一个 联合类型 的推断:

代码语言:typescript
AI代码解释
复制
let arr = [1, 'a'];
arr = ['a', 'b', 'c', 1, 3, 5, false];

如上的 let arr = [1, 'a']; TS 会自动推断为 let arr: (number | string) = [1, 'a']; 所以如上的 arr 变量只能存储 numberstring 类型的数据。

根据上下文类型自动推断

代码语言:typescript
AI代码解释
复制
window.onmousedown = (event) => {
    console.log(event.target);
}

当我在编译器当中编写了如上的代码之后编译器在函数的入参当中的参数后面给了一个提示如下:

image-20211201102006526
image-20211201102006526

可不是博主自己编写的哦,说明它已经推断出了具体的类型了,雷同如下代码:

代码语言:typescript
AI代码解释
复制
window.onmousedown = (event: MouseEvent) => {
    console.log(event.target);
}
输入图片说明
输入图片说明

最后

本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

输入图片说明
输入图片说明

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
初识TypeScript:入门体验与简介
介绍其基本概念、语法特性以及如何开始使用它来构建类型安全的JavaScript应用程序。无论您是新手还是有经验的开发者,都能在这篇文章中找到有关TypeScript的重要信息和实用技巧。让我们一起探索这个强大的编程语言!
杨不易呀
2023/09/28
2000
初识TypeScript:入门体验与简介
TypeScript-泛型
还是和之前一样的套路,利用一个需求来引出没有使用泛型的弊端,需求: 定义一个创建数组的方法, 可以创建出 指定长度 的数组, 并且可以用 任意指定的内容 填充这个数组:
杨不易呀
2023/09/28
3100
TypeScript-泛型
04. 从TypeScript入手,驾驭HarmonyOS开发的技术风潮!-----------(番外篇)
指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定具体类型的一种特性。
全栈若城
2024/03/12
1770
04. 从TypeScript入手,驾驭HarmonyOS开发的技术风潮!-----------(番外篇)
TypeScript-基础类型
如上代码的含义定义了一个名称叫做 val 的变量, 这个变量中将来只能存储数值类型的数据,定义数值类型可以利用 number 注解来进行指定,指定了之后就不能在存储其它类型的数据了,错误示例如下:
杨不易呀
2023/09/28
1850
TypeScript-基础类型
TypeScript-属性装饰器
TypeScript中的属性装饰器是一项有力的特性,允许开发者在类的属性上应用装饰器函数,以自定义属性的行为和元数据。这为开发者提供了更多的控制权和灵活性,以满足各种需求。
杨不易呀
2023/09/29
4210
TypeScript-属性装饰器
TypeScript-混入
ypeScript中的混入(Mixins)是一项强大的面向对象编程技术,它允许开发者在类之间共享和复用代码,以创建具有多个不同特征的类的组合。混入实际上是将一个或多个类的成员添加到另一个类中,而不需要继承整个类层次结构。
杨不易呀
2023/09/29
2520
TypeScript-泛型约束
博主需求: 要求指定的泛型类型必须有 length 属性才可以指定该类型为泛型的类型:
杨不易呀
2023/09/28
3950
TypeScript-泛型约束
TypeScript | 笔记
引言 TypeScript 学习笔记 TypeScript 是 JavaScript 的超集 你写 ts 代码,然后通过 ts 编译器编译为纯粹的 js 代码 ts 使用 js 语法,然后添加一个额外的语法以便支持强类型 安装 安装ts compiler npm install -g typescript tsc --v npm install -g ts-node 编译 app.ts tsc app.ts node app.js ts-node
yiyun
2023/01/08
2750
TypeScript | 笔记
TypeScript手记(六)
TypeScript 里,在有些没有明确指出类型的地方,类型推断会帮助提供类型。如下面的例子:
用户7572539
2020/08/26
1.2K0
TypeScript-去除null和undefined检测
先不管三七二十一,首先来看一个函数的定义,该函数的内部返回了一个函数的回调,主要作用就是获取一个字符串的长度,可是呢函数的入参是一个联合类型,如下:
杨不易呀
2023/09/28
5000
TypeScript-装饰器
如上代码的含义为给 Person 这个类绑定了一个 普通的装饰器,这个装饰器的代码会在定义类之前执行, 并且在执行的时候会把这个类传递给装饰器,除了如上的步骤还是不行的编译器还是会报错,还需要开启 experimentalDecorators 修改 tsconfig.json:
杨不易呀
2023/09/29
2390
TypeScript-声明合并
🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗
杨不易呀
2023/09/29
3140
约束即类型、TypeScript 编程内参(一)
本文是《约束即类型、TypeScript 编程内参》系列第一篇:约束即类型,主要记述 TypeScript 的基本使用和语法。
腾讯IVWEB团队
2020/06/24
1.1K0
TypeScript-声明
在经过 TypeScript-声明的介绍了之后我们知道可以通过 declare 来进行声明,那么在 TS 当中呢它是不推荐我们将声明的定义和使用放在同一个文件当中的,它推荐的是将声明的定义单独写到一个文件当中里面去,好了介绍了这些内容之后我们先来看看我们把声明的定义单独写到一个文件当中去,然后在使用声明的地方看看能不能使用声明的定义内容吧。
杨不易呀
2023/09/29
3030
TypeScript-接口
TypeScript 中的接口(Interface)是用于定义对象的结构和类型的强大工具。它允许开发者明确定义对象应该包含哪些属性和方法,并在代码中实现类型检查和约束。接口提高了代码的可读性、可维护性和类型安全性,促进了团队协作。通过接口,可以创建自定义类型,以适应各种复杂数据结构和对象,从而在开发过程中提供更好的代码组织和错误预防。
杨不易呀
2023/09/28
2410
TypeScript-接口
深入类型系统_TypeScript笔记8
编译器能够根据变量初始值3推断出变量类型是number,因此多数场景下不必显式声明类型,它猜得到
ayqy贾杰
2019/06/12
1.1K0
深入类型系统_TypeScript笔记8
TypeScript-可选属性和索引签名
本章节要介绍的内容为 TS 接口当中的可选属性和索引签名,如果要想先了解可选属性和索引签名之前首先要来介绍一下接口的注意点,接口的注意点就是如果你使用了接口类型来限定了函数的入参,限定了某个变量,这个时候你调用函数或者使用变量的时候就必须和接口里面的限定一模一样,例如之前我们接口当中有 firstName 与 lastName 那么你调用函数给入参的时候入参的参数当中就必须包含该两个参数,那么如何来验证一下我所说的这一点内容呢,其实很简单,直接上代码即可如下代码是正常情况下的代码:
杨不易呀
2023/09/28
4940
TypeScript-可选属性和索引签名
TypeScript-继承和函数、函数声明和重载
🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗
杨不易呀
2023/09/28
4510
TypeScript-继承和函数、函数声明和重载
《现代Typescript高级教程》类型推断
TypeScript通过类型推断可以自动推导出变量和表达式的类型,提高代码的可读性和可维护性。
linwu
2023/07/27
4610
TypeScript-类
🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗
杨不易呀
2023/09/28
2360
TypeScript-类
相关推荐
初识TypeScript:入门体验与简介
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档