TypeScript基础知识:类型守卫和类型推断

这篇具有很好参考价值的文章主要介绍了TypeScript基础知识:类型守卫和类型推断。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        在 TypeScript 中,类型守卫和类型推断是两个重要的概念,它们可以帮助我们更好地理解和利用类型系统的优势。本文将详细介绍这两个概念,并提供示例代码来说明它们的用法和优势。

一、类型守卫

        类型守卫是一种在 TypeScript 中用于缩小变量类型范围的技术。当我们使用条件语句或特定的语法结构时,TypeScript 可以根据这些条件自动推断出变量的具体类型。这样,我们就可以在不同的代码块中使用不同的类型方法和属性,而无需手动进行类型断言。下面是一个简单的示例,展示了如何使用类型守卫:

function printLength(value: string | string[]) {
  if (Array.isArray(value)) {
    console.log("数组长度:" + value.length);
  } else {
    console.log("字符串长度:" + value.length);
  }
}

printLength("Hello"); // 输出:字符串长度:5
printLength(["Hello", "World"]); // 输出:数组长度:2

在上面的代码中,printLength 函数接受一个参数 value,它可以是字符串或字符串数组。通过使用 Array.isArray 方法对 value 进行判断,我们可以在不同的条件分支中使用不同的属性和方法,而不会引发类型错误。

        除了使用 typeof  instanceof 进行类型守卫外,我们还可以使用自定义的类型谓词来实现更复杂的类型守卫逻辑。例如:

function isNumber(value: any): value is number {
  return typeof value === "number";
}

function multiply(value: number | string, factor: number) {
  if (isNumber(value)) {
    return value * factor;
  } else {
    return value.repeat(factor);
  }
}

console.log(multiply(5, 3)); // 输出:15
console.log(multiply("Hello", 3)); // 输出:HelloHelloHello

在上面的代码中,我们定义了一个名为 isNumber 的类型谓词函数,用于判断变量是否为数字类型。通过使用 value is number 的语法,我们可以在条件分支中确保 value 是一个数字类型,从而避免潜在的类型错误。类型守卫是 TypeScript 中非常有用的特性,它可以提供更强大的类型检查和更安全的代码编写体验。

二、类型推断

类型推断是 TypeScript 中另一个重要的特性,它允许编译器根据上下文自动推断变量的类型。这样,我们就可以省略显式地注解变量类型,让 TypeScript 自动为我们推断出正确的类型。

下面是一个简单的示例,展示了类型推断的用法:

let message = "Hello TypeScript"; // 推断为字符串类型
let count = 10; // 推断为数字类型

function add(a: number, b: number) {
  return a + b; // 推断返回值类型为数字类型
}

let result = add(5, 3); // 推断 result 的类型为数字类型

在上面的代码中,我们没有显式地注解变量 messagecount 和函数 add 的参数和返回值类型,但 TypeScript 编译器可以根据赋值和函数体的内容自动推断出正确的类型。

除了基本类型推断外,TypeScript 还支持上下文推断、最佳通用类型推断和函数返回值推断等更高级的推断技巧。这些推断规则使得我们在编写代码时可以更加简洁和灵活,同时不失去类型安全性。

总结

        通过本文的介绍,我们了解了 TypeScript 中的两个重要概念:类型守卫和类型推断。类型守卫允许我们根据条件缩小变量的类型范围,从而在不同的代码块中使用不同的类型方法和属性。而类型推断则可以根据上下文自动推断变量的类型,使得我们可以省略显式地注解变量类型,让 TypeScript 自动为我们推断出正确的类型。文章来源地址https://www.toymoban.com/news/detail-785178.html

到了这里,关于TypeScript基础知识:类型守卫和类型推断的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【TypeScript】基础知识学习笔记

    TypeScript的特点: JavaScript的超集,满足所有的JS语法 含有面向对象的静态类型 起步安装:1、npm i typescript -g 2、tsc 文件名 一、TS的基本数据类型 基本数据类型:number、boolean、string、undefined、null、symbol、bigint、void 当中的类型有大小写的区分:大写的类型是给对象使用,小写

    2024年02月09日
    浏览(56)
  • 【TypeScript】类型推断与类型别名的使用方式。

    什么是类型推断? 在 TypeScript 中, 如果声明变量时, 没有明确的指定类型 ,那么 TypeScript 会依照类型推论(Type Inference)的规则推断出一个类型。 以下代码虽然 没有明确指定类型 ,但是会在编译的时候报错: 事实上,它等价于: TypeScript 会在没有明确的指定类型的时候,

    2024年02月16日
    浏览(46)
  • 【TypeScript】TS类型守卫(六)

    🐱个人主页: 不叫猫先生 🙋‍♂️作者简介:前端领域优质创作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫系列专栏:vue3从入门到精通、TypeScript从入门到实践 📝个人签名:不破不立 📢资料领取:前端进阶资料以及文中源码可以

    2024年02月22日
    浏览(45)
  • TypeScript 学习笔记(四):类型守卫

    类型守卫的作用在于触发类型缩小。实际上,它还可以用来区分类型集合中的不同成员 类型守卫包括switch、字面量恒等、typeof、instanceof、in 和自定义类型守卫 简单说当一个类型是多种可能时例如’any’,‘unknown’,‘联合类型’ 等在逻辑判断时候要具体到其唯一子集可能性

    2024年02月15日
    浏览(55)
  • 【03】基础知识:typescript中的函数

    函数声明法 函数表达式/匿名函数 1、typescript 中定义函数传参 函数声明 函数表达式/匿名函数 2、可选参数 在 es5 中,方法的形参和实参个数可以不一样;但是在 ts 中必须一样,如果不一样就需要配置可选参数。 ts 中 通过【 形参?: 数据类型 】形式定义可选参数,代表该参数

    2024年02月13日
    浏览(39)
  • 【01】基础知识:typescript安装及使用,开发工具vscode配置

    typeScript 是由微软开发的一款开源的编程语言。 typeScript 是 javascript 的超级,遵循最新的 es6、es5规范。 typeScript 扩展了 javaScript 的语法。 typeScript 更像后端 java、C# 这样的面向对象语言,可以让 js 开发大型企业项目。 全局安装:$ npm install -g typescript 查看 typescript 版本:$ ts

    2024年02月13日
    浏览(56)
  • TypeScript -- 基础类型

    错误示范 正确写法 布尔类型 – boolean 赋值为true 和 false 赋值为Boolean()对象 数字类型 – number 使用 number 定义数值类型 编译结果 字符串类型 – string 数组类型 「类型 + 方括号」 泛型 联合类型 元组类型 枚举类型 – enum 枚举定义 枚举项有两种类型:常数项(constant member)和

    2024年02月15日
    浏览(39)
  • 【TypeScript】基础类型

    https://nodejs.org/en 终端中可以查到版本号即安装成功。 然后,终端执行 npm i typescript -g 安装 TypeScript 。 查到版本号即安装成功。 终端中先执行 tsc --init ,然后执行 tsc -w 。发现原本TS文件夹中只有index.ts,现在多了两个文件。 再开一个终端,执行 即可输出。 同样支持模板字符

    2024年02月12日
    浏览(35)
  • TypeScript的基础类型

    1. boolean类型: boolean表示布尔值类型,即true和false。例: 2. number类型: number表示数字类型,包括整数和浮点数。例: 3. string类型: string表示字符串类型。例: 4. void类型: void表示没有返回值的函数类型。例: 5. null和undefined类型: null和undefined表示null和undefined值的类型。例

    2024年02月11日
    浏览(45)
  • TypeScript教程(二)基础语法与基础类型

    TypeScript由以下几个部分组成 1.模块 2.函数 3.变量 4.语句和表达式 5.注释 示例: Runoob.ts 文件代码: 以上代码首先通过  tsc  命令编译: Runoob.js 文件代码:  最后我们使用 node 命令来执行该 js 代码。 tsc 常用编译参数如下表所示: 序号 编译参数说明 1. --help 显示帮助信息

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包