TypeScript基本类型

在TypeScript中,基本类型是非常重要的一部分,下面我们将详细介绍TypeScript中的基本类型。

基本类型约束

在TypeScript中,可以使用基本类型来约束变量的类型。常见的基本类型有:

  • number:表示数字类型,包括整数和浮点数。
  • string:表示字符串类型。
  • boolean:表示布尔类型,只有两个值true和false。
  • type[]:表示数组类型,包含多个同类型元素。
  • object:表示对象类型,可以包含多个键值对。

除此之外,还有两个特殊的基本类型:

  • null:表示空对象。
  • undefined:表示未定义的值。

需要注意的是,null和undefined是其他类型的子集,可以赋值给其他类型。如果要获得更严格的空类型检查,可以添加strictNullChecks: true,此时null和undefined只能赋值给本身。

其他常用类型

除了上述基本类型外,还有一些其他常用类型:

联合类型

联合类型是指一个变量可以同时具有多种类型。可以使用竖线|来连接不同的类型。例如:

let x: number | string;
x = 1; // 正确
x = "hello"; // 正确
x = true; // 错误,布尔类型不是x的类型之一

当对联合类型的变量进行类型判断之后,TypeScript会自动推断出变量的确切类型,这种过程叫做类型保护。例如:

function printId(id: number | string) {if (typeof id === "number") {console.log(`Your id is ${id.toFixed(0)}`);} else {console.log(`Your id is ${id.toUpperCase()}`);}
}

void类型

void类型表示没有任何返回值的函数,通常用于约束函数的返回值。例如:

function sayHello(): void {console.log("Hello TypeScript!");
}

never类型

never类型表示一个函数永远不可能结束,通常用于约束函数的返回值。例如:

function throwError(msg: string): never {throw new Error(msg);
}

字面量类型

字面量类型是指使用一个值进行约束,例如约束性别字段。可以使用单引号或双引号包裹值。例如:

type Gender = "male" | "female" | "other";
let gender: Gender = "male"; // 正确
gender = "unknown"; // 错误,"unknown"不是Gender类型之一

元组类型

元组类型是指一个固定长度的数组,并且每一项的类型也确定。可以使用方括号和类型列表来定义元组类型。例如:

let person: [string, number] = ["Tom", 18];

any类型

any类型表示不确定的类型,可以绕过类型检查,可以赋值给任意变量。在TypeScript中,尽量少使用any类型,因为它会降低代码的可维护性。

类型别名

类型别名是指使用type关键字和自定义名称来定义类型,可以用来简化复杂类型。例如:

type UserId = number | string;
function getUserById(id: UserId) {// ...
}

函数的相关约束

在TypeScript中,可以对函数的参数、返回值等进行约束。常见的约束方式有:

函数重载

函数重载是指在函数之前,对函数调用的多种情况进行声明。例如:

function add(x: number, y: number): number;
function add(x: string, y: string): string;
function add(x: any, y: any): any {return x + y;
}

可选参数

可选参数是指可以在某些参数名后加上问号?,表示该参数为可选参数,可选参数必须在参数列表的末尾。例如:

function printName(firstName: string, lastName?: string) {if (lastName) {console.log(`My name is ${firstName} ${lastName}.`);} else {console.log(`My name is ${firstName}.`);}
}

总结

本文介绍了TypeScript中的基本类型,包括基本类型约束、其他常用类型、类型别名和函数的相关约束。TypeScript的类型系统可以帮助开发者更好地捕获潜在的错误,并提高代码的可维护性。在使用TypeScript时,建议尽量使用类型约束,以减少潜在的错误。

【TypeScript】03-TypeScript基本类型相关推荐

  1. 使用TypeScript映射和条件类型使React组件更出色

    by Deepu K Sasidharan 通过Deepu K Sasidharan 使用TypeScript映射和条件类型使React组件更出色 (Make your React component ...

  2. 第七节:在 TypeScript 中什么是类型推论?

    上一节,我们学习了TypeScript中的一种新的数据类型:元组Tuple.没学习上一节的同学可以戳:<又一种新的数据类型:元组Tuple> 这一节,我们一起来学习一下TypeScript ...

  3. TypeScript完全解读(26课时)_2.TypeScript完全解读-基础类型

    2.TypeScript完全解读-基础类型 src下新建example文件夹并新建文件.basic-type.ts.截图中单词拼错了.后需注意一下是basic-type.ts 可以装tslint的插件 ...

  4. 【Typescript专题】之类型进阶

    [Typescript专题]之类型进阶 本篇文章是<Typescript 专题>第一篇,本篇文章主要聊一聊基本类型相关的扩展,毕竟随着文章的加深,我在阅读官方文档的时候经常会见到陌生的声明 ...

  5. TypeScript里的工具类型Partial的理解用法

    TypeScript里的工具类型Partial的理解用法 Partial 可以快速把某个接口类型中定义的属性类型变成可选的(Optional): 其实Partial源码很简单 Partial 可以快速 ...

  6. [译] TypeScript 3.0: unknown 类型

    原文地址:TypeScript 3.0: The unknown Type 原文作者:Marius Schulz 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- ...

  7. TypeScript中的联合类型、类型别名、接口、类型断言

    一.联合类型 在TypeScript中,联合类型(Union Types)是指用"|"符号将多个类型组合成一个的类型.这种类型可以包含不同的类型,例如字符串.数字或对象.这些不同类 ...

  8. 【TypeScript专题】之类型断言

    [TypeScript 专题]之类型断言 断言是编程术语,表示为一些布尔表达.-- 百度百科 系列文章,收藏不走丢哦 类型断言(Type Assertion)可以用来手动指定一个值的类型.就是告诉编译 ...

  9. TypeScript完全解读(26课时)_12.TypeScript完全解读-高级类型(1)

    12.TypeScript完全解读-高级类型(1) 高级类型中文网的地址:https://typescript.bootcss.com/advanced-types.html 创建新的测试文件 ind ...

最新文章

  1. 思考:开发者如何挑选最合适的机器学习框架?
  2. Android驱动开发第五章
  3. 需求编写的几点经验之谈
  4. 【Linux】—— /usr/bin/perl 被 MySQL-community-server-8.0.26-1.el7.x86_64 需要,解决方法
  5. LLVM language 参考手册 翻译停止相关
  6. 杂谈:项目管理的是与非[转贴]
  7. 软件项目管理:进度管理相关概念介绍
  8. github 进阶说明
  9. 摄影测量--内外方位元素
  10. java实现调查问卷_智能办公进行时丨富士施乐邀您参与有奖问卷调查
  11. APPCAN学习笔记006_创建第一个APPCAN应用
  12. CSS3秘笈复习:第十一章
  13. java 指针 引用_C++中的指针和引用与Java中的引用区别
  14. xs2鸿蒙系统,华为Mate XS2来了,搭载麒麟9000,依旧安卓10版本
  15. python用户画像_干货:如何构建用户画像
  16. A/N GPU架构解析
  17. IE、360、百度三者的比较
  18. 【计算机组成原理】码距怎么计算
  19. [机缘参悟-82]:企业、HR、管理者激励员工的本质
  20. 道阻且长 莫失本心(我的OI之旅

热门文章

  1. 国标GB28181协议视频平台EasyGBS大并发下SIP消息出现重复SN号的解决办法
  2. 世界级医学院校--哈佛医学院进修各大教学附属医院申请指南
  3. 关闭PyCharm中的波浪线-右下角没有小人头的问题解决
  4. 股票技术指标中的VOL,KDJ,MACD,OBV,VR,DMA分别代表什么意思?很关键,谢谢
  5. 创新沙盒 软件定义安全SDS走向应用
  6. golang量化投资数据接口是什么
  7. pdf如何转成ppt,最详细的教程!
  8. 现代电机设计可改进便携式真空吸尘器
  9. 带有验证码的登陆页面
  10. python信号_python 之信号Signal