美文网首页
TypeScript基础

TypeScript基础

作者: 杨志聪 | 来源:发表于2023-10-04 17:09 被阅读0次

编程语言可以分为动态类型和静态类型两种类型。动态类型,指的是变量的类型是在运行时决定的,而且随时会改变,JavaScript、Python、Ruby都是动态类型。静态类型,指的是变量的类型是在编译时决定的,而且无法改变,C++、C#和Java都是静态类型。

TypeScript本质上是加上静态类型和泛型、装饰器等特性的JavaScript,让我们写出更简洁和健壮的代码。

运行环境

目前浏览器和nodejs都不能直接运行TypeScript,所以需要将TypeScript代码转换为JavaScript代码才能运行。

安装TypeScript编译器tsc

npm i -g typescript

查看tsc编译器的版本号,确定tsc已安装:

tsc -v

编译TypeScript代码:

tsc index.ts

类型

TypeScript除了包含JavaScript中的基本类型(number, boolean,string...)外,还新增了any,unknown,never,tuple等类型。

// Number
let i: number = 0;

// Tuple
let user: [number, string] = [1, 'Tom'];

// Enum
enum Size { Small = 1, Medium, Large};

// Function
function sum(a: number, b: number): number {
    return a + b;
}

// Object
let employee: {
    id: number;
    name: string;
} = {
    id: 1,
    name: 'Tom'
}

// Any
let anything: any = 0;
anything = 'tom';

需要特别注意的是any类型,any类型打破了TypeScript静态类型的特性!所以如果你没有想清楚你要做什么,尽量不要用any

类型进阶

  1. 类型别名(type alias)。通过类型别名可以给一个类型起一个新的名字。我们常用类型别名来创建自定义的类型。
type Employee = { 
 id: number; 
 name: string; 
 retire: (date: Date) => void
  1. 联合类型(union type)。创建一个可以有多种类型的变量。
let weight: number | string = 1; 
weight = '1kg';
  1. 交叉类型(Intersection Types)。是将多个类型合并为一个类型。
type UIWidget = Draggable & Droppable;
  1. 字面量类型(Literal Types)。是 TypeScript 2.0 引入的一种新类型,它允许你将变量的值限制为某些特定的字面量值。
type Quantity = 50 | 100; 
  1. 可为空类型(Nullable Types)。它允许在变量中存储一个值或null。
let name: string | null = null; 
  1. 可选链(Optional Chaining)。是一种在访问对象属性时,如果属性不存在则返回undefined的语法。
customer?.birthdate?.getFullYear();
customers?.[0]; 
log?.('message');
  1. 空值合并运算符??(Nullish Coalescing Operator)。是一种特殊的操作符,用于处理TypeScript变量值。它的作用是判断变量值是否为 null 或 undefined,如果是,则返回一个默认值或一个新的值。
let val = '';
console.log(val ?? 'alright'); // 打印val的值,因为val不是null或undefined
console.log(val || 'alright'); // 打印alright,因为空字符视为false
  1. unknown类型。unkonwn类型是any类型的安全版本,推荐代替any使用。因为unkonwn类型的变量需要将它确定为具体的类型后才能对它进行操作。
function render(document: unknown) { 
 // 需要确定为具体的类型,才能进行操作
 if (typeof document === 'string') { 
   // 将document作为string类型进行操作
 }
}
  1. never类型。一般用never类型来声明一个永不返回的函数(死循环),或者一个一定会抛出错误的函数。
function processEvents(): never { 
 while (true) {}
}
  1. 类型断言(Type Assertion)。可以用来手动指定一个值的类型。有时我们比编译器更清楚一个变量的类型,这时候就可以用类型断言。
// 将obj视为Person类型处理
obj as Person

相关文章

网友评论

      本文标题:TypeScript基础

      本文链接:https://www.haomeiwen.com/subject/somsbdtx.html