广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >如何理解TypeScript
  • 252
分享到

如何理解TypeScript

2024-04-02 19:04:59 252人浏览 安东尼
摘要

今天就跟大家聊聊有关如何理解typescript,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言TypeScript是强类型语言,所以相比于jav

今天就跟大家聊聊有关如何理解typescript,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

前言

TypeScript是强类型语言,所以相比于javascript而言有着更强的语言规范约束能力,能够让我们的代码可读性更高。同时可以在编译过程中进行错误校验,提升了我们代码的开发效率。

1.什么是Typescript?

TypeScript并不是一门新的编程语言,它是Javscript的超集,即在JavaScript语言的基础上添加了语言约束:可选的静态类型和基于类的面向对象编程。其实就是添加了静态类型检查,有了约束可以让我们在开发过程中减少错误代码的书写。

TypeScript和JavaScript的关系如下:

如何理解TypeScript

TypeScript和JavaScript的区别:

如何理解TypeScript

2.两分钟上手TS开发

“工欲行其事,必先利其器”,说的就是在做事情之前,要做好所有的准备。同样的,我们要学习TS开发,必须先安装语言环境和编辑器工具

安装TypeScript

有两种方式可以获取TypeSscript工具:

(1)NPM安装:

npm install -g typescript

(2)验证TS安装

tsc -v # Version 4.2.4

(3)构建TS文件 在编辑器中构建一个TS文件test.ts:

function addNum(num1:num,num2:num){   return num1 + num2; } console.log(addNum(1,2)); //3

(4)编译代码:

tsc test.ts

编译得到js代码:

"use strict"; function addNum(num1, num2) {     return num1 + num2; } console.log(addNum(1, 2));

3.基础类型

如何理解TypeScript

3.1 Boolean类型

只有两个值:true和false。

let isTrue: boolean = true;

3.2 Number类型

所有的数字都是浮点型,支持二进制、八进制、十进制以及十六进制字面量。

// 数字类型,所有数字都是浮点型 let decLiteral: number = 10; let hexLiteral: number = 0xf00d;

3.3 String类型

TS可以使用双引号( ")或单引号(')表示字符串

// 字符串,表示文本数据类型 let username: string = "yichuan"; let like: string = `${yichuan} + FE`;

3.4 Array类型

数组操作有两种方式可以声明:

  • 可以在元素类型后面接上 [],表示由此类型元素组成的一个数组。

  • 使用数组泛型,Array<元素类型>。

let list: number[] = [1, 2, 3]; let list: Array<number> = [1, 2, 3];

3.5 Tuple类型

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。

// 元组  let tuple: [string,number]; tuple = ["wenbo",1];

TS元组和数组其实大致一样,唯一的区别就是数组中的元素类型必须相同,而元组可以存储不同类型的元素。甚至可以说元组是any类型的数组。

3.6 Enum类型

enum类型是对JavaScript标准数据类型的一个补充。枚举类型提供的一个便利是你可以由枚举的值得到它的名字。

// 枚举  // 默认情况下,枚举的元素编号是从0开始,也可以进行手动编号。 enum Color {Red, Green, Blue}; let c:Color = Color.Red;

3.7 Any类型

any表示任意类型。有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。

// Any  let notSure:any = 100.002; notSure.toFixed(); let list3:any[] = ["zhaoshun","male",12];

其实,any类型是类型系统的顶级类型,因为任何类型都归结于any类型,是不是很自由。自由过了火,一个不恰当的比喻,JS是any类型的TS,允许对any类型的值进行各种操作,而无需编译校验。

3.8 Void类型

void类型它表示没有任何类型。当一个函数没有返回值时,你通常会见到其返回值类型是 void。

声明一个void类型的变量没有什么大用,因为你只能为它赋予null和undefined。

function showName():void {   console.log("your name is wenbo"); }  // 声明一个void类型的变量 let unusable: void = undefined;

3.9 Null 和 Undefined

TypeScript里,undefined和null两者各自有自己的类型分别叫做undefined和null。默认情况下null和undefined是所有类型的子类型,可以把  null和undefined赋值给number类型的变量。

let u: undefined = undefined; let n: null = null;

但是,当指定了--strictNullChecks标记,null和undefined只能赋值给void和它们各自。

3.10 Object

object表示非原始数据类型(除number,string,boolean,symbol,null或undefined之外的类型)。

declare function create(o: object | null): void;  create({ prop: 0 }); // OK create(null); // OK  create(42); // Error create("string"); // Error create(false); // Error create(undefined); // Error

3.11 Never

never类型表示的是那些永不存在的值的类型。

never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。即使  any也不可以赋值给never。

// 返回never的函数必须存在无法达到的终点 function error(message: string): never {     throw new Error(message); }  // 推断的返回值类型为never function fail() {     return error("Something failed"); }  // 返回never的函数必须存在无法达到的终点 function infiniteLoop(): never {     while (true) {     } }

3.12 Unknown 类型

任何类型都可以被归为unknow类型,因此unknow也是ts类型中的顶级类型。

let value: unknown;   value = true;             // OK value = 18;               // OK value = "yichuan";    // OK value = [];               // OK value = {};               // OK value = Math.random;      // OK value = null;             // OK value = undefined;        // OK value = new TypeError();  // OK value = Symbol("type");   // OK

我们看到对于value变量而言,所有的赋值都是正确的,就会感觉是不是发现和any好像没啥区别,真的是这样吗。当我们给赋值其他类型时,就会出现意想不到的问题,发现unknow类型只能被赋值给any类型和unknow类型本身,这就是跟any的区别。

let value: unknown;   let value1: unknown = value;   // OK let value2: any = value;       // OK let value3: boolean = value;   // Error let value4: number = value;    // Error let value5: string = value;    // Error let value6: object = value;    // Error let value7: any[] = value;     // Error let value8: Function = value;  // Error

所以得到:只有能够保存任意类型值的容器才能保存 unknown类型的值。

值得注意的是,TS不允许我们对unknow类型的值执行任何操作,必须得先执行类型校验后来确定使用值的范围。那么如何缩小unknow值的范围呢?

很简单,有请我们的老朋友typeof、instanceof运算符和自定义类型保护函数,通过使用缩小类型范围的技术都有助于 TypeScript  的基于控制流的类型分析。

例如,通过if语句分支

function stringifyForLogging(value: unknown): string {   if (typeof value === "function") {     const functionName = value.name || "(anonymous)";     return `[function ${functionName}]`;   }     if (value instanceof Date) {     return value.toISOString();   }   return String(value); }

通过使用自定义类型保护函数缩小 unknown 类型范围。

function isNumberArray(value: unknown): value is number[] {   return (     Array.isArray(value) &&     value.every(element => typeof element === "number")   ); }   const unknownValue: unknown = [15, 23, 8, 4, 42, 16];   if (isNumberArray(unknownValue)) {   const max = Math.max(...unknownValue);   console.log(max); }

尽管 unknownValue 已经被归为 unknown 类型,请注意它如何依然在 if分支下获取到 number[] 类型。

看完上述内容,你们对如何理解TypeScript有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网VUE频道,感谢大家的支持。

--结束END--

本文标题: 如何理解TypeScript

本文链接: https://www.lsjlt.com/news/81106.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何理解TypeScript
    今天就跟大家聊聊有关如何理解TypeScript,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言TypeScript是强类型语言,所以相比于Jav...
    99+
    2022-10-19
  • 如何理解Typescript代码
    这篇文章主要介绍“如何理解Typescript代码”,在日常操作中,相信很多人在如何理解Typescript代码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Type...
    99+
    2022-10-19
  • 如何理解TypeScript枚举类型
    本篇内容主要讲解“如何理解TypeScript枚举类型”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解TypeScript枚举类型”吧!前言:TypeScript 在 ES 原有类型基础上...
    99+
    2023-06-25
  • 如何理解TypeScript中的子类型、逆变、协变
    这篇文章主要介绍“如何理解TypeScript中的子类型、逆变、协变”,在日常操作中,相信很多人在如何理解TypeScript中的子类型、逆变、协变问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方...
    99+
    2022-10-19
  • 如何使用TypeScript类型注解
    小编给大家分享一下如何使用TypeScript类型注解,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!类型注解TypeScript提供了很多数据类型,通过类型对变量进行限制,称之为类型注解,使用类型注解后,就不能够随意变更变...
    99+
    2023-06-29
  • 浅谈TypeScript 索引签名的理解
    目录1.什么是索引签名2. 索引签名语法3. 索引签名的注意事项3.1不存在的属性3.2 string 和 number 键4.索引签名与 Record<Keys, Type&...
    99+
    2022-11-12
  • Typescript协变与逆变简单理解
    目录1. 协变和逆变简单理解2. 协变举例3. 逆变举例4. 更简单点的理解5. 参考1. 协变和逆变简单理解 先简单说下协变和逆变的理解。 首先,无论协变还是逆变,必然是存在于有继...
    99+
    2022-11-13
    Typescript协变与逆变 Typescript协变 Typescript逆变
  • 如何通俗的解释TypeScript 泛型
    目录概述什么是泛型编译系统通俗的理解泛型泛型类其他泛型使用的通俗解释结语概述 在 TypeScript 中我们会使用泛型来对函数的相关类型进行约束。这里的函数,同时包含 class ...
    99+
    2022-11-12
  • 在Typescript中如何使用for...in详解
    如何在Typescript中使用for...in ?本人在TS中用for...in出现了些问题,也想到了一些解决方法。那么先来看看下面报错的代码吧。 interface ABC { ...
    99+
    2022-11-13
  • typescript如何使用
    本篇内容主要讲解“typescript如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“typescript如何使用”吧! 基本类型 字符串,数字,布尔...
    99+
    2022-10-19
  • 如何使用TypeScript
    这篇文章主要讲解了“如何使用TypeScript”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用TypeScript”吧!一、什么是 TypeScriptTypeScript 是近几年...
    99+
    2023-06-03
  • 如何解析TypeScript中函数重载写法
    今天就跟大家聊聊有关如何解析TypeScript中函数重载写法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言:大多数函数接受一组固定的参数。但有些函数可以接受可变数量的参数,不同...
    99+
    2023-06-25
  • 如何在TypeScript中处理日期字符串
    目录前言:一、模板字面量类型二、类型谓词缩小范围三、定义日期字符串总结:前言: 在我最近的一个项目中,我必须去处理多个自定义的日期字符串表示法,比如YYYY-MM-DD和YYYYMM...
    99+
    2022-11-13
  • VSCode如何开发TypeScript
    本篇内容介绍了“VSCode如何开发TypeScript”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!TypeScript是JaveScri...
    99+
    2023-06-29
  • TypeScript如何使用Record
    这篇文章将为大家详细讲解有关TypeScript如何使用Record,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。运用RecordRecord 是TypeScr...
    99+
    2022-10-19
  • TypeScript如何使用Omit
    这篇文章主要介绍了TypeScript如何使用Omit,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。巧用Omit有时候我们需要复用一个类型,...
    99+
    2022-10-19
  • TypeScript如何遍历Array
    这篇文章主要讲解了“TypeScript如何遍历Array”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“TypeScript如何遍历Array”吧!一、for..of 方法这是最常用的方法,...
    99+
    2023-07-02
  • Typescript类型检查原理之Override如何实现
    这篇文章主要介绍了Typescript类型检查原理之Override如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Typescript类型检查原理之Override如何实现文章都会有所收获,下面我们一起...
    99+
    2023-06-05
  • Vue3中如何使用TypeScript
    这篇文章主要介绍“Vue3中如何使用TypeScript”,在日常操作中,相信很多人在Vue3中如何使用TypeScript问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue3中如何使用TypeScript...
    99+
    2023-07-06
  • Laravel中如何使用Typescript
    本篇内容介绍了“Laravel中如何使用Typescript”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!为什么使用 TypeScriptT...
    99+
    2023-07-04
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作