如何学习TS?

在这里插入图片描述

文章目录

    • 一. 8种内置基础类型.ts
    • 二. void、never、any、unknown类型
        • void类型
        • never类型
        • any类型
        • unknown类型
        • 总结:
            • void和any在项目中是比较常见的,never和unknown不常用。
    • 三. 数组和函数类型定义.ts

一. 8种内置基础类型.ts

/* eslint-disable @typescript-eslint/no-unused-vars */
// 定义类型: string
const name: string = 'jack'// 定义类型: number
const age: number = 30// 定义类型: boolean
const isTrue: boolean = true// 特殊的几个:---------
// 定义undefined类型
let a: undefined// 定义null类型
const b: null = null// 定义object类型
const user: object = {}// 或者
const user1: { name: string; age: number } = { name: 'zhangsan', age: 24 }// 定义bigint类型
const big: bigint = 100n// 定义symbol符号类型
const sym: symbol = Symbol('hepan')export default {}

二. void、never、any、unknown类型

void类型

void表示没有任何类型,不能直接赋值。

let a: void; 
let b: number = a; // 报错

给变量赋值为void是没有意义的。

如果一个函数没有返回值,此时我们可以定义为void

function fn():void {console.log('今天天气不错')
}<a href="javascript:void;"></a>
never类型

never类型表示永不存在的值的类型。
(在报错或者死循环时候使用)

// 抛出异常
function error(): never {throw new Error('我是一个Error'); 
}// 死循环
function loop(): never {while (true) {console.log('这里是死循环')};
}
any类型

any类型表示任意类型。

let num:number = 1000;
num = "jack" // 报错let num:any = 1000;
num = "jack" // 不报错// 调用方法,依然不报错
num.setName('jack')

虽然any不做任何约束,但是非常不推荐这样使用,这样会带来隐患。

我们在开发组件、模块、定义函数、调用接口时,如果类型很难定义出来、不知道属于什么类型等场景,可以适当使用any类型。

unknown类型

unknownany一样,所有类型都可以分配给unknown,反之把unknown 赋值给其它类型会报错。

// unknown 可以接收任意类型
let name:string = "jack"
let user:unknown = name;// unknown 不可以赋值给其它类型,any除外,下面会报错
let name:unknown = "jack"
let user:string = name;

(在报错或者死循环时候使用)

// 抛出异常
function error(): unknown {throw new Error('我是一个Error'); 
}// 死循环
function loop(): unknown {while (true) {console.log('这里是死循环')};
}
总结:
  • 能确定类型的,尽量定义类型。

  • 无法确定类型的,可以使用 any 进行兜底。

  • 当函数没有返回值时,可以使用void定义。

  • any和unknown可以接收任意类型值,any可以赋值给任意类型,但unknown不可以赋值给任意类型。

  • void和any在项目中是比较常见的,never和unknown不常用。

三. 数组和函数类型定义.ts

// 数组类型的定义
const list1: number[] = [1, 2, 3]const list2: Array<number> = [1, 2, 3]const list3: [number, string, boolean] = [1, '2', true]const list4: [{ name: string; age: number }] = [{ name: 'jack', age: 30 }]const list5: Array<{ name: string; age: number }> = [{ name: 'jack', age: 30 }]interface User {name: stringage: number
}const list6: Array<User> = [{ name: 'jack', age: 30 }]// 函数类型的定义
// :在函数括号后加冒号
// 变量类型定义:在变量后加冒号function add1(a: number, b: number): number {return a + b
}function add2(a: number, b: number): void {console.log(a + b)
}// 定义报错用unkown
function add3(a: number, b: number): unknown {throw new Error('Error')
}// 箭头函数两种定义
// (括号后面加冒号)
const add4 = (a: number, b: number): number => {return a + b
}// (变量后加冒号)
const add5:(a: number, b: number) => number = (a: number, b: number) => {return a + b
}export default {}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/305467.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记12——Spring的注解配置

学习笔记系列开头惯例发布一些寻亲消息 链接&#xff1a;https://baobeihuijia.com/bbhj/contents/3/192486.html SSM框架——注解配置&#xff08;Component Autowired 加载SpringConfig&#xff09; 注解开发&#xff08;Component注解、config扫描 加载SpringConfig&a…

像美团一样商家入驻的小程序功能

美团一样的商家入驻小程序可以促进本地化商家的线上线下融合&#xff0c;为本地商家和用户提供更好的服务和体验&#xff0c;是一种数字化转型和创新&#xff0c;想要开发像美团一样的商家入驻小程序&#xff0c;需要具备以下功能&#xff1a; 1、不同行业独立频道 为本地化的…

【kubernetes】集群网络(一):基础篇

Flannel 1 路由表 & arp & fdb 1.1 路由表 任何网络设备都需要路由表&#xff0c;路由表用来决定&#xff0c;当收到数据包时&#xff0c;该向哪里进行转发。路由表项通常会包含以下几个字段&#xff1a; Destination&#xff1a;目的地Gateway&#xff1a;网关Mas…

深度解析TB用户购物行为:系统搭建与优化

深度解析TB用户购物行为&#xff1a;系统搭建与优化 引言系统搭建数据集技术选型 系统功能1. 用户维度分析2. 产品维度分析3. 聚类结果分析 创新点系统优化与展望优化展望 结语 引言 在电商时代&#xff0c;了解用户购物行为并从中提取有价值的信息对于企业制定营销策略和优化…

自动化测试与功能测试的区别(超详细总结)

什么是自动化测试? 自动化测试是指利用软件测试工具自动实现全部或部分测试&#xff0c;它是软件测试的一个重要组成 部分&#xff0c;能完成许多手工测试无法实现或难以实现的测试。能够正确、合理地实施自动测试&#xff0c;可以 快速、全面地对软件进行测试&#xff0c;从…

嵌入式开发——ADC模拟信号和数字信号

模拟信号和数字信号 模拟信号 自然界中大多数物理量是连续变化的,比如温度、声音、压力等灯,它们在一定时间内,可以有无限多个不同的取值,这些信号就是模拟信号。模拟信号就是指用连续变化的物理量所表示的信号。 自然界中的物理量都需要通过传感器将其转换成电信号后,才能进…

兔子目标检测数据集VOC格式3900张

兔子是一类可爱的哺乳动物&#xff0c;拥有圆润的脸庞和长长的耳朵&#xff0c;身体轻盈柔软。它们通常是以温和和友善的形象出现在人们的视野中&#xff0c;因此常常成为童话故事和卡通形象中的角色。 兔子是草食性动物&#xff0c;主要以各种草本植物为食&#xff0c;包括草…

Java学习——设计模式——创建型模式1

文章目录 创建型模式单例饿汉式懒汉式存在的问题 工厂方法简单工厂模式工厂方法模式抽象工厂模式 创建型模式 关注点是如何创建对象&#xff0c;核心思想是要把对象创建和使用相分离&#xff0c;这样两者能相对独立地变换 包括&#xff1a; 1、工厂方法&#xff1a;Factory Met…

什么是SNP SAP云端数据集成解决方案?

SNP SAP云端数据集成解决方案旨在充分利用云计算的灵活性和可伸缩性&#xff0c;以实现更低的成本维护和更快速的决策制定能力。该解决方案通过使用人工智能和机器学习实现高级分析&#xff0c;使用户能够快速做出明智的、数据驱动的决策。通过将数据集成到云端&#xff0c;企业…

vscode无法连接服务器

1.服务器问题 2.网络配置问题 重启服务器或者确认服务器操作无误 C:\Users\Alice\.ssh\config

C# 常用数据类型及取值范围

1.常见数据类型和取值范围 序号数据类型占字节数取值范围1byte10 到 2552sbyte1-128 到 1273short 2-32,768 到 32,7674ushort20 到 65,5355int4-2,147,483,648 到 2,147,483,6476uint40 到 4,294,967,2957float41.5 x 10−45 至 3.4 x 10388double85.0 10−324 到 1.…

Qt学习:Qt的意义安装Qt

Qt 的简介 QT 是一个跨平台的 C图形用户界面应用程序框架。它为程序开发者提供图形界面所需的所有功能。它是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正地组件编程。 支持平台 xP 、 Vista、Win7、win8、win2008、win10Windows . Unix/Linux: Ubuntu 等…