携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情
TypeScript 基础知识
a. 基本数据类型
-
布尔值
boolean使用 boolean 定义布尔值类型
let isDone: boolean = false; -
数值
number使用 number 定义数值类型
let decLiteral: number = 6; // ES6 中的二进制表示法 let binaryLiteral: number = 0b1010; // ES6 中的八进制表示法 let octalLiteral: number = 0o744;二进制和八进制会被编译为十进制数字
-
字符串
string使用 string 定义字符串类型
let myName: string = 'Tom'; let myAge: number = 25; // 模板字符串 let sentence: string = `Hello, my name is ${myName}. I'll be ${myAge + 1} years old this month.`;注:
` `用来定义模板字符串,${expr}用来在模板字符串中嵌入表达式。 -
undefined 和 null
let u: undefined = undefined; let n: null = null; -
空值(Void)
在 TypeScript 中, 表示没有任何类型, 可以用
void表示没有任何返回值的函数/* 空值一般用来说明函数的返回值不能是undefined和null之外的值(相当于没有任何返回值) */ function fn(): void { console.log('fn()') // return undefined // return null // return 1 // error }
小结:
-
先声明变量,后赋值
let unit: number; unit = 5; -
变量有默认值的话,一般不需要显式声明类型,
TypeScript会自动推断变量的类型(类型推论)let id = 7; // number 类型 let name = 'typescript'; // string 类型 -
可以将变量设置为联合类型(联合类型是可以分配多个类型的变量)
let age: string | number; age = 7; age = '7';
b. 类型推论(Type Inference)
TypeScript会在没有明确指定类型的地方,提供一个类型
// 1. 定义变量时赋值,推断为对应的类型
// 变量age的类型被推断为数字
let age = 7;
// 2. 定义变量时没有赋值, 推断为任意值类型
let a; // any类型
a = 123;
a = 'abc';
c. 联合类型(Union Types)
表示取值可以为多种类型中的一种,使用 | 分隔每个类型
当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,只能访问此联合类型的所有类型里共有的属性或方法
// toString()方法是 string 和 number 的共有属性
function getString(something: string | number): string {
return something.toString();
}
d. 数组
定义数组的两种方式:
-
类型 + [ ] 表示由此类型元素组成的一个数组
-
数组泛型( Array<元素类型> )
let list1: number[] = [1, 2, 3]
let list2: Array<number> = [1, 2, 3]
//联合类型来定义包含多种类型的数组
let person: (string | number | boolean)[] = ['ConardLi', 1, true];
e. 函数
TypeScript 中可以定义函数参数和返回值的类型
// 定义一个名为 reduce 的函数,它接受类型为 number 的数字,并返回一个数字
function reduce(a: number, b: number): number {
return a - b;
}
console.log(reduce(10, 3)); // 7
//ES6 箭头函数的写法:
const reduce = (a: number, b:number): number => {
return a - b;
};
可选参数:用 ? 表示可选的参数
const add = (a: number, b: number, c?: number | string) => {
console.log(c);
return a + b;
};
console.log(add(1, 6, '可以是 number或者string')); // 可以是 number或者string 7
f. 任意值(Any)
表示允许赋值为任意类型。通常为编译阶段还不清楚类型的变量指定一个类型
变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型
let myFavoriteNumber: any = 'seven';
myFavoriteNumber = 7;
let something;
something = 'seven';
注:如果大量使用 any,TypeScript 就失去了意义(其它类型在赋值过程中改变类型是不被允许)