1. TypeScript 的基本类型
按照深入理解typescript
以及typescript再学习 整理
- string
- number
- boolean
- 数组 boolean[]
- 接口 interface
- 内联类型
- 特殊类型
string, number, boolean
let str: string;
let num: number;
let bool: boolean;
str = '123';
num = 123;
bool = true;
数组
使用后缀 [], 每个单类型数组中只可以存储单一类型。
let boolArray: boolean[];
boolArray = [true, false];
console.log(boolArray[0]); // true
console.log(boolArray.length); // 2
boolArray[1] = true;
boolArray = [false, false];
boolArray[0] = 'false'; // Error
boolArray = 'false'; // Error
boolArray = [true, 'false']; // Error
如何像js一样使用可以存储不同类型的的数组?
- tuple 元组 见下文
- 联合类型 使用 |
联合类型:
let array: (string|number)[] = [“123”, 123, “456”, “789”];
接口 Interface
typescript的核心。把多类型合并至一个类型声明。对基本类型类型和复杂类型的封装。
interface Name {
first: string;
second: string;
}
let name: Name;
name = {
first: 'John',
second: 'Doe'
};
name = {
// Error: 'Second is missing'
first: 'John'
};
name = {
// Error: 'Second is the wrong type'
first: 'John',
second: 1337
};
内联类型
let name: {
first: string,
second:string
} = {
first: "John",
second: "Doe"};
特殊类型
any类型。
可以理解为 javascript 的所有类型。如果把typescript的所有类型都定义为any,就和javascript 一样 避开所有的类型检查。
any 可以 赋值给所有类型。也可以被所有类型赋值。
unknown类型。
any类型的type-safe版本。不可知类型。
任何类型都可以赋值给unknown,但是unknown需要做类型检查才能赋值给其他。
null 和 undefined。
在strictNullChecks: false 的情况下,null 和 undefined 字面量也可以赋值给任何类型。
void 表示函数没有返回值。
范型。
function reverse<T> (items: T[]) : T[]{
const toreturn = [];
for (let i = items.length - 1; i >= 0; i--) {
toreturn.push(items[i]);
}
return toreturn;
}
交叉类型
T & U
包含类型T 和 U 的所有属性。
联合类型
T | U
类型 T 或者 类型 U
元组类型
let nameNumber: [string, number];
nameNumber = ["Jenny", 12345];
const [name, number] = nameNumber; //destructing
类型别名
type StrOrNum = string | number;
let sample: StrOrNum;
sample = 123;
sample = "123";
type Text = string | { text: string };
type Coordinates = [number, number];
type Callback = (data: string) => void;