TypeScript基础-基础类型

104 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情
本篇是最基础的,有了解的可以越过。

基础类型

和javascript一样有布尔类型boolean、数值类型number、字符串string和模板字符串、数组Array、 Object\Null 和 Undefined。只是在定义变量时需要设置变量的类型,Typescript会根据声明的类型在编译时进行校验,相比于js能在开发阶段更早的获取的不正确的信息。

const isdouble: boolean = false; 
const age: number = 12; 
const name: string = '小明'; 
const description: string = `姓名:${name},年龄:${age}。`; 
const list: Array<number> = [1, 2, 3, 4];
const list2: number[] = [1, 2, 3, 4];
const obj: object = {};
const a: undefined = undefined;
const b: null = null;

和javascript不一样的是多了一些类型如下:
元组Tuple: 一个已知元素数量和类型的数组。

let data: [number, string, boolean];
data = [18, '小明', true]

枚举Enum: 通俗描述就是一组值和名的数据集合,可以在使用中可以方便快速的通过值获取名或者通过名获取值,通过值获取名的前提条件是值是数值类型的。

enum Status { RUNNING = 1, STOP = 2, FINISHED = '3' };
console.log(Status.RUNNING); // 1
console.log(Status[2]); // STOP
console.log(Status['3']); // undefined

补充一下,枚举编译成js其实质时是一个普通对象,编译后如下:

var Status;
(function (Status) {
    Status[Status["RUNNING"] = 1] = "RUNNING";
    Status[Status["STOP"] = 2] = "STOP";
    Status["FINISHED"] = "3"; // 只给名附了一个值
})(Status || (Status = {}));

Any: 就是你不知道它的类型你就给一个any,可以表示任何类型,一般是在编译阶段你不知道它的类型的情况下。可以躲避过类型检查,但是对应的开发是就不会有相应的一些提示,或者出现不可避免的错误,所以能不用就不用的原则最好。

const a: any = test(); // 方法不知道返回什么类型的数据

Void: 不表示任何类型,一般用在没有返回值的方法,和java中的类似。和any正好相反。

function test(): void {
  console.log('hello');
  // return 'hello'; // 错误不能后返回值
}

Never: 是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型。

function test(): never { 
  throw new Error('错误'); 
}