摘要:大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil。 有点奇怪的是,JavaScript语言居然有两个表示"无"的值:undefined和null。这是为什么? 一、相似性 在JavaScript中,将一个变
阅读全文
摘要:void void类型表示没有任何类型。 没有返回值的函数,其返回值类型为 void function warnUser(): void { console.log("This is my warning message"); } 声明为 void 类型的变量,只能赋予 undefined 和 nu
阅读全文
摘要:一、区别 interface 和 type 两个关键字的含义和功能都非常的接近。这里我们罗列下这两个主要的区别: interface 同名的 interface 自动聚合,也可以跟同名的 class 自动聚合 只能表示 object、class、function 类型 type 不仅仅能够表示 ob
阅读全文
摘要:普通 declare declare function hello1(s: string): void; declare global declare global { function hello2(s: string): void } ❗️在 d.ts 声明文件中,任何的 declare 默认就
阅读全文
摘要:TypeScript 中不可变量的实现方法有两种: 1. 使用 ES6 的 const 关键字声明的值类型2. 被 readonly 修饰的属性 TypeScript 中 readonly: TypeScript 中的只读修饰符,可以声明更加严谨的可读属性。通常在 interface 、 Class
阅读全文
摘要:一、简介 实际开发中,经常需要定义一组相关的常量。 const RED = 1; const GREEN = 2; const BLUE = 3; let color = userInput(); if (color RED) {/* */} if (color GREEN) {/* */} if
阅读全文
摘要:一、尽量减少重复代码 对于刚接触 TypeScript 的小伙伴来说,在定义接口时,可能一不小心会出现以下类似的重复代码。比如: interface Person { firstName: string; lastName: string; } interface PersonWithBirthDa
阅读全文
摘要:📖 TypeScript 接受一些注释指令。 所谓“注释指令”,指的是采用 JS 双斜杠注释的形式,向编译器发出的命令。 // @ts-nocheck // @ts-nocheck 告诉编译器不对当前脚本进行类型检查,可以用于 TypeScript 脚本,也可以用于 JavaScript 脚本。
阅读全文
摘要:一、简介 单独使用的模块,一般会同时提供一个单独的类型声明文件(declaration file),把本模块的外部接口的所有类型都写在这个文件里面,便于模块使用者了解接口,也便于编译器检查使用者的用法是否正确。 类型声明文件里面只有类型代码,没有具体的代码实现。它的文件名一般为[模块名].d.ts的
阅读全文
摘要:一、简介 任何包含 import 或 export 语句的文件,就是一个模块(module)。相应地,如果文件不包含 export 语句,就是一个全局的脚本文件。 模块本身就是一个作用域,不属于全局作用域。模块内部的变量、函数、类只在内部可见,对于模块外部是不可见的。暴露给外部的接口,必须用 exp
阅读全文
摘要:一、什么是装饰器 装饰器是一种特殊类型的声明,它能够被附加到类声明、方法、属性或者参数上, 装饰期语法: 装饰器使用 @expression 这种形式,以@开头,expression求值后必须为一个函数,它会在运行时被调用,被装饰的声明信息做为参数传入 function logController(
阅读全文
摘要:简介 映射(mapping)指的是,将一种类型按照映射规则,转换成另一种类型,通常用于对象类型。 举例来说,现有一个类型A和另一个类型B。 type A = { foo: number; bar: number; }; type B = { foo: string; bar: string; };
阅读全文
摘要:in 运算符 JavaScript 语言中,in运算符用来确定对象是否包含某个属性名。 const obj = {a:123}; if('a' in obj) { console.log('found a') } 上面示例中,in运算符用来判断对象obj是否包含属性a。 in运算符的左侧是一个字符串
阅读全文
摘要:字面量类型 在了解typeof和keyof之前,我们首先需要了解什么是字面量类型以及联合字面量类型。 TypeScript 中的字面量类型是更具体的string、number或boolean类型,它可以被这样定义: type Greeting = 'hello'; 这意味着类型为Greeting的变
阅读全文
摘要:函数 和JavaScript一样,TypeScript函数可以创建有名字的函数和匿名函数。 你可以随意选择适合应用程序的方式,不论是定义一系列API函数还是只使用一次的函数。 通过下面的例子可以迅速回想起这两种JavaScript中的函数: // Named function function ad
阅读全文
摘要:类 下面看一个使用类的例子: class Greeter { greeting: string; constructor(message: string) { this.greeting = message; } greet() { return "Hello, " + this.greeting;
阅读全文
摘要:概念 什么是Map Map是一种数据结构(它很特别,是一种抽象的数据结构类型),数据一对对进行存储,其中包含键以及映射到该键的值。并且由于键的唯一性,因此不存在重复的键值对。 Map便是为了快速搜索和查找数据而生的。 例如: { (1, "smile"), (2, "cry"), (42, "hap
阅读全文
摘要:在JavaScript中,我们似乎很少听说接口这个概念,这是TypeScript中很常用的一个特性,它让 TypeScript 具备了 JavaScript 所缺少的、描述较为复杂数据结构的能力。下面就来看看什么是接口类型。 一、接口定义 接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都
阅读全文
摘要:定义和创建 Map 对象 在 TypeScript 中,可以使用 Map 关键字定义一个 Map 对象,然后使用 new 关键字创建一个 Map 实例。例如: let map: Map<string, number> = new Map(); 上述代码定义了一个名为 map 的 Map 对象。<st
阅读全文
摘要:一、数组类型定义 TypeScript 提供了以下两种方式来定义数组类型: 简单数组类型表示法 在TypeScript中,你可以使用数组类型表示法来定义一个数组的类型。这是一个基础的方法,直接定义数组元素的类型。 例如,如果我们想要定义一个只包含字符串类型元素的数组,我们可以这样做: let str
阅读全文