TypeScript 的基础类型总结

Boolean类型

布尔类型

let state: boolean = false;
复制代码

Number类型

数字类型

let num: number = 66;
复制代码

String类型

字符串

let str: string = 'hello world!';
复制代码

symbol类型

// const sym = Symbol();
复制代码

Array类型

数组类型

let arr1: number[] = [1, 2, 3, 4];

let arr2: Array<number> = [1, 2, 3, 4];
复制代码

Enum类型

枚举类型

enum List {
	ONE,
	TWO,
	THREE,
	FORE
}

enum List1 {
	ONE,
	TWO = "A",
	THREE = 8,
	FORE
}

enum List2 {
	ONE = 'first',
	TWO = 'second',
	THREE = 'third',
	FORE = 'fourth'
}
复制代码

Any类型

在 TypeScript 中,任何类型都可以被归为 any 类型。这让 any 类型成为了类型系统的顶级类型(也被
称作全局超级类型)。

let sure: any = 'sure';

sure = 666;

sure = false;
复制代码

UnKnown类型

就像所有类型都可以赋值给 any ,所有类型也都可以赋值给 unknown 。这使得 unknown 成为
TypeScript 类型系统的另⼀种顶级类型(另⼀种是 any )。

let sure1: unknown;

sure1 = 666;

sure1 = true;

// let value1: string = sure1;  // Error
复制代码

Tuple(元组)类型

数组⼀般由同种类型的值组成,但有时我们需要在单个变量中存储不同类型的值,这时候我
们就可以使⽤元组。

let tupleArray: [string, number] = ['hello', 123]
复制代码

Void类型

某种程度上来说,void 类型像是与 any 类型相反,它表示没有任何类型。当⼀个函数没有返回值时,你
通常会⻅到其返回值类型是 void

function fn(): void {
	console.log("TypeScript");
}
复制代码

Null 和 Undefined

TypeScript ⾥, undefined 和 null 两者有各⾃的类型分别为 undefined 和 null 。

let n: null = null;

let u: undefined = undefined;
复制代码

object,Object 和 {} 类型

1、object类型

TypeScript 2.2 引⼊的新类型,它⽤于表示⾮原始类型。

// node_modules/typescript/lib/lib.es5.d.ts
interface ObjectConstructor {
	create(o: object | null): any;
	// ...
}
const proto = {};
Object.create(proto); // OK
Object.create(null); // OK
// Object.create(undefined); // Error
// Object.create(1337); // Error
// Object.create(true); // Error
// Object.create("oops"); // Error
复制代码

2、Object类型

它是所有 Object 类的实例的类型,它由以下两个接⼝来定义:

  • Object 接⼝定义了 Object.prototype 原型对象上的属性;
// node_modules/typescript/lib/lib.es5.d.ts
interface Object {
	constructor: Function;
	toString(): string;
	toLocaleString(): string;
	valueOf(): Object;
	hasOwnProperty(v: PropertyKey): boolean;
	isPrototypeOf(v: Object): boolean;
	propertyIsEnumerable(v: PropertyKey): boolean;
}
复制代码
  • ObjectConstructor 接⼝定义了 Object 类的属性。
// node_modules/typescript/lib/lib.es5.d.ts
interface ObjectConstructor {
	/** Invocation via `new` */
	new(value?: any): Object;
	/** Invocation via function calls */
	(value?: any): any;
	readonly prototype: Object;
	getPrototypeOf(o: any): any;
	// ···
}
declare var Object: ObjectConstructor;
复制代码

Object 类的所有实例都继承了 Object 接⼝中的所有属性。

3、{} 类型

{} 类型描述了⼀个没有成员的对象。当你试图访问这样⼀个对象的任意属性时,TypeScript 会产⽣⼀个编译时错误。

// Type {}
const obj = {};

// Error: Property 'prop' does not exist on type '{}'.
obj.prop = "semlinker";
复制代码

但是,你仍然可以使⽤在 Object 类型上定义的所有属性和⽅法,这些属性和⽅法可通过 JavaScript 的原型链隐式地使⽤:

// Type {}
const obj2 = {};

// "[object Object]"
obj.toString();
复制代码

Never类型

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

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

// 返回never的函数必须存在⽆法达到的终点
function error(message: string): never {
	throw new Error(message);
}
function infiniteLoop(): never {
	while (true) { }
}
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享