TypeScript 01:类型注解与类型推断

TypeScript 技能训练:从类型注解到高级类型实战 类型系统是现代编程语言的核心能力之一,它通过静态检查在编译阶段提前暴露潜在错误,从而提升代码的健壮性和可维护性。TypeScript 的类型推断、泛型约束、条件类型与模板字面量类型等机制,构成了从基础注解到复杂类型设计的完整技术栈。理解这些原理不仅能帮助开发者写出更安全的业务代码,还能在 API 封装、表单状态管理和组件属性联动等真实场景中减少重复定义、提高开发效率。然而,仅仅阅读文档难以真正掌握这些高级类型工具,需要结合系统性的练习和反馈机制。本文基于 mattpocock / skills 的训练思路, 阅读详情

TypeScript 01:类型注解与类型推断

有 JS 基础即可阅读。

1. TS 是什么

TS = JS + 类型系统:类型只在写代码时检查,运行前被剥掉,跑的还是 JS。
价值就一条:把运行时的 bug 提前到写代码时报错。

// JS: add(1, '2') 静默返回 '12',bug 潜伏到线上
// TS: add(1, '2') 直接标红,不让提交

2. 类型注解

冒号 + 类型,标注「这个值是什么」:

let username: string = 'Tom'
let age: number = 18 // 没有 int/float,统一 number
let isVip: boolean = false
let nothing: null = null

3. 类型推断:大多数注解不用写

右边是什么,左边就是什么,能推断就不写:

let price = 99 // 自动推断为 number
price = '便宜点' // ❌ Type 'string' is not assignable to type 'number'

只有 3 种情况必须手写注解:

场景原因
函数参数TS 猜不到调用方传什么
空容器 let list = []没内容可推断
导出的 API锁定「契约」,防止乱传

4. 数组

const scores: number[] = [90, 85, 77]
const tags: Array<string> = ['new', 'hot'] // 等价于 string[]
const mixed: (string | number)[] = ['a', 1]

scores.push('90') // ❌ 每个元素都必须是 number

5. 对象:描述「形状」

const user: { name: string; age: number } = { name: 'Tom', age: 18 }

const u = { name: 'Jerry' } // ❌ Property 'age' is missing(少字段)
user.age = '十九' // ❌ string 不能赋给 number(类型错)

6. 函数

参数必须标,返回值让 TS 推断:

function add(a: number, b: number) {
  return a + b // 返回值自动推断为 number
}
const greet = (name: string) => `你好,${name}` // 推断为 string

add(1, '2') // ❌ 参数类型不符(JS 里会静默返回 '12')
add(1, 2, 3) // ❌ Expected 2 arguments, but got 3(个数也管)

7. 联合类型 A | B

「可能是 A,也可能是 B」:

function formatId(id: string | number) {
  return `ID-${id}`
}
formatId(101) // ✅
formatId(true) // ❌ boolean 不在联合范围内

拿到联合类型后想分开处理,需要「类型收窄」(typeof 判断等)。

8. any:逃生舱,少用

const data: any = JSON.parse('{"x":1}')
data.x
data.foo.bar.baz() // ✅ 全不检查,错了运行时才炸

any = 关闭检查。更安全的替代品是 unknown(用之前必须先确认类型)。

9. 高频报错速查

报错人话
Type 'string' is not assignable to type 'number'塞了字符串,这里要数字
Property 'age' is missing对象缺字段
Expected 2 arguments, but got 3参数个数不对
TypeScript学习笔记一 TypeScript基础类型 阅读详情

相关推荐

【TypeScript】TypeScript数据类型(上篇)

一文带你了解TypeScript中的常用类型

前端之行,任重道远! 8964

前端TypeScript学习day01-TS介绍与TS部分常用类型

学习目标:1.了解TS并运行TS代码 2.了解部分TS常用类型

来自想要赚大钱的小周同学 5519

基于MobileNet⁃DOA的无人机射频信号识别方法

本文提出了一种基于MobileNet-DOA模型的无人机射频信号识别方法,用于解决低信噪比环境下无人机型号和飞行模式识别率低的问题。该方法首先采用变分模态分解(VMD)进行信号预处理以降低噪声干扰,然后通过短时傅里叶变换(STFT)将信号转换为时频图。在模型设计上,将DOConv卷积融入MobileNetv4模型以增强特征提取能力并提高运算速度,同时引入FA注意力机制提升低信噪比环境下的识别精度。实验结果表明,该方法在-15~15dB信噪比范围内的平均识别准确率达到94.83%,显著优于现有方法,特别在-1

qq_43416206的博客 1349

TypeScript系列01-类型系统全解析

TypeScript 是 JavaScript 的超集,由 Microsoft 于 2012 年发布,设计目标是增强 JavaScript 的开发体验和代码质量。TypeScript 代码最终会被编译(转译)为原生 JavaScript,因此它可以在任何支持 JavaScript 的环境中运行。// TypeScript = JavaScript + 静态类型系统 + 额外语言特性TypeScript 类型系统强大而灵活,它不仅能捕获常见错误,还能作为代码文档,提升开发效率和代码质量。

但行好事,莫问前程;不忘初心,方得始终! 379

CS231n+assignment2(一)

cs231n作业二详解+代码

qq_56551150的博客 2411

【谷粒商城】分布式事务与下单

=购物车== 构建gulimall-cart,复制静态资源到nginx,修改网关 购物车分为离线购物车和登录购物车 离线购物车重启浏览器了也还有 1、购物车需求 特点:读多写少,放入数据库并不合适 登录状态:登录购物车 放入数据库 mongodb 放入redis(采用) 登录以后,将离线购物车里合并后清空离线购物车 未登录状态:离线购物车 放入localstorage浏览器的技术 cookie WebSQL 放入redis(采用) 浏览器重启后还在 2、购物车VO (1) 数据结构分析

努力充实,远方可期 1万+

01 - TypeScript

TypeScript是一种为JavaScript添加静态类型检查的强类型编程语言,主要优势包括提前发现代码错误和提高开发效率。

luckyzlb 651

【数据分析生命周期全揭秘】从零开始打造你的数据科学项目 | 最全指南

在当今数据驱动的世界中,数据科学正在颠覆传统行业,成为企业决策和价值创造的重要引擎。然而,如何科学、系统地开展一个数据分析项目?这是很多人关心的核心问题。本篇文章基于经典数据分析课程内容,深入解读数据分析生命周期的每个阶段,让你快速掌握从“发现问题”到“落地应用”的完整流程。如果你正在学习或准备从事数据分析领域,这篇文章一定会对你大有帮助!数据分析生命周期的六大阶段数据分析生命周期的六个阶段相辅相成,每个阶段都至关重要:发现问题:明确需求,提出假设。数据准备:清洗、转换和可视化数据。

AI手套的博客 1742

TypeScript01-基础知识

TypeScript快速入门

感谢所有乐于奉献的人,在此不一一具名 890

【Flink】FlinkSQL如何触发执行计算

Table (通过 StatementSet.addInsert() 输出给某个 Sink)和 INSERT 语句 (通过调用 StatementSet.addInsertSql())会先被缓存到 StatementSet 中,StatementSet.execute() 方法被调用时,所有的 sink 会被优化成一张有向无环图。该方法是用来将一个表的内容插入到目标表中,一旦该方法被调用, TABLE API 程序立即被翻译。该方法是用来执行一个 SQL 语句,一旦该方法被调用, SQL 语句立即被翻译。

一杯咖啡半杯糖的博客 1007

虚拟机安装VMware Tools

单击虚拟机-->安装VMware Tool 安装之后会有一个VMware Tools硬盘,里面有VMware Tools.tar.gz的压缩包 按照提示解压它,然后执行vmware-install.pl安装VMware Tools 将安装包放到/tmp目录下。可以直接拽过去,也可以使用cp或者mv命令 进入tmp文件目录并解压此文件包 cd /tmp ...

afei001 621

TypeScript语言

概述 静态类型与动态类型 JavaScript自有类型系统的问题 Flow静态类型检查方案 TypeScript语言规范与基本应用 强类型与弱类型 强类型与弱类型 从类型安全的角度区分 强类型 :从语言层面限制函数的实参类型必须与形参类型相同 弱类型语言:并不会去限制 有隐式类型转换 静态类型动态类型语言 是否允许类型转换,从类型检查的角度区分 javascript类型系统特征 可以说没有类型系统,任性 丢失类型系统的可靠性, 没有类型检查,因为没有编译阶段 弱类型的问题 运行阶段才能发

weixin_53800968的博客 1535

轴承故障诊断领域的论文到底有多水

这个是最让人困惑的,就好像你说自己证明了某个方法更好,但是你却没有交代自己怎么做的,或者说你交代的过程有外行话或者逻辑上的缺陷,但是你就这么给出个结果完事了。由于自己没有足够大的学术交流圈子,为了尽量避免误判,我在原来13篇论文的基础上又读了18篇,这些论文至少都出自中文核心,有一些还有EI的title,事实上近几年能找到的文章也不算多,这些基本能说明问题了。当然,还有更多细节,比如说损失函数你得交代吧,模型超参数得介绍全吧,至少数据集是哪个工况下的得说吧,当你想复现这些论文,关注点在这些地方的时候。

weixin_50642818的博客 3053

TypeScript 类型谓词(Type Predicates)实战指南:从手写类型守卫到 5.5 自动推断

类型谓词(Type Predicates)是 TypeScript 中由开发者自定义、用来把变量的类型收窄到更具体类型的布尔函数,它是"用户自定义类型守卫"的基石。本文以《The Concise TypeScript Book》的 [Type Predicates](https://link.gitcode.com/i/f3b18380210fd5edfde3de85426e5c2c) 章节为核心

gitblog_00418的博客 85

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

探索TypeScript基础语法:让你的JavaScript项目更强大(上)

在TypeScript中,类型推断是指编译器根据变量的赋值来自动推断出变量的类型,而无需显式地给变量添加类型注解。除了基本的类型(如number、string、boolean等),TypeScript还支持更复杂的类型注解,如数组、对象、函数等。需要注意的是,类型推断是根据变量的赋值来进行的,如果变量的赋值是多种类型的联合类型,那么推断出来的类型会是联合类型。类型注解可以帮助您在编写代码时明确变量的类型,提供代码提示和类型检查,从而减少潜在的类型错误。注意,数组的元素类型可以通过类型注解或类型推断来确定。

青轩桃李能几何,流光欺人忽蹉跎 167

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

TypeScript-day01

可以将 TS 中的常用基础类型细分为两类:1 JS 已有类型 2 TS 新增类型。JS 已有类型原始类型:number/string/boolean/null/undefined/symbol。对象类型:object(包括,数组、对象、函数等对象)。TS 新增类型联合类型、自定义类型(类型别名)、接口、元组、字面量类型、枚举、void、any 等。

qq_42385494的博客 1332

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ts 类型分类

any类型不进行任何检测 但是unknown使用的时候ts默认会进行检测。any表示任意类型 那么定义的变量可以随意修改它的类型 这样有问题。unknown类型表示的是未知类型 是any类型对应的安全类型。例如: type A=number;当一个值不存在的时候就会被自动类型推断成never类型。我们使用ts的时候最好主动告诉ts这是一个什么类型。可以采用any类型对应的unknown类型类定义。通过将变量声明空间和类型声明空间结合到一起的操作就叫做类型注解。交叉类型很少是基本类型 大多都是对象类型。

m0_47045804的博客 983

refine 技术视野:TypeScript 与 JavaScript 全面对比——静态类型系统、工具链与迁移实战指南

TypeScript 是在动态类型语言 JavaScript 之上构建的静态类型超集,它为 Web 应用引入了编译期类型检查、结构类型系统和一系列语言扩展。本文以该主题为核心,从静态类型与动态类型的本质差异出发,系统讲解类型定义、类型注解与类型推断、结构类型系统、`tsc` 编译器与类型检查器的工作原理,并结合当前 refine 仓库的真实配置([tsconfig.json](https://li

gitblog_00527的博客 756

TypeScript速成班:一篇文章搞定

TypeScript快速入门:一篇文章搞定

唯见青山不见君 2524

前端之typescript

TypeScript 是一个由 Microsoft 开发的开源、静态类型化的编程语言,它构建在 JavaScript 之上,并为 JavaScript 添加了可选的静态类型系统以及其他一些现代语言特性。TypeScript 编写的代码可以被编译成纯 JavaScript 代码,从而可以在任何支持 JavaScript 的环境中运行。// 声明一个字符串类型变量// 声明并初始化一个数值型数组// 定义一个接口(用于描述对象结构)id: number;// 创建一个符合 User 接口的对象。

m0_74242675的博客 1212

TypeScript Workshop完全指南:从零开始掌握TypeScript的终极教程

TypeScript Workshop是一个全面的TypeScript学习项目,旨在帮助开发者从零开始掌握TypeScript。本教程将带你逐步了解TypeScript的核心概念、项目设置以及实际应用,让你快速上手这门强大的编程语言。 ## 为什么选择TypeScript? TypeScript是一种编译型JavaScript语言,所有用TypeScript编写的代码最终都会由JavaScri

gitblog_00729的博客 326

React 播客专栏 Vol.6|TypeScript 是什么?为啥写 React 要加它?

TS 会立马在编辑器标红,说:“嘿,你这是把字符串当数字用了!TypeScript,简称 TS,是由微软打造的 JavaScript 超集。你改一个组件名、改一个接口字段名,TS 会全项目跟踪提醒你改哪里,不怕改崩项目。你所有能写的 JS 代码在 TS 里都能写,只不过它多了个强大武器:类型系统。正文内容为学习笔记摘要,音频内容是详细的解读,方便你理解),请点击下方收听。🔍 第一部分:认识 TypeScript,这个“超集”是个啥?🔍 第一部分:认识 TypeScript,这个“超集”是个啥?

前端达人 1153

TypeScript

安装 安装完成后,在控制台运行如下命令,检查安装是否成功(3.x): vscode自动编译 类型注解 接口 一种约束

m0_59213774的博客 416

Promise.all、allSettled、race、any 怎么选,失败后其他请求会怎样

通过局部失败和备用服务案例比较 Promise.all、allSettled、race、any,补充取消、fetch 状态、空输入和并发限制。程序员Sunday整理,完整问答收录于 sunday面试指南。

LGD_Sunday的专栏 232
上一篇: 基于 qiankun 的应用间页面跳转
下一篇: TypeScript 02:interface、type 与类型收窄
ZoeLandia
博客等级 码龄6年 734粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值