typescript学习日记 (一)——类型定义
基础类型
JS的八种内置类型
字符串(string)
数字(number)
布尔值(boolean)
未定义(undefined)
空值(null)
对象(object)
大整数(bigInt,ES6 新增)
符号(symbol,ES6 新增)
let name: string = "菜鸡程序员";
let age: number = 18;
let hasMoney: boolean = false;
let un: undefined = undefined;
let nu: null = null;
let obj: object = {hh: 1};
let bigLiteral: bigint = 100n;
let mbol: symbol = Symbol("symbol");
Array
对数组类型的定义有两种方式:
// 元素类型[]
let arr: number[] = [1, 2, 3];
//--------------------------------------------
// Array<元素类型>
let arr: Array<number> = [1, 2, 3];
定义对象数组:
interface MyObj{
name: string;
age: number;
}
let arr: MyObj[] = [{name: "菜鸡程序员", age: 18}] // OK
Tuple
对于内部不同类型的数组可以使用元组类型来定义:注(定义的数组是长度、类型已经明确的数组)
let arr: [number, string];
arr = [18,"菜鸡程序员"];
arr = ["菜鸡程序员",18];//错误写法
undefined和null
默认情况下null和undefined是所有类型的子类型。 就是说你可以把null和undefined赋值给任何类型的变量。
let name: string = '菜鸡程序员';
name = null;
name = undefined;
void
void表示没有任何类型,和其他类型是平等关系,不能直接赋值
let name:void;
let b:string = a;//错误
any和unknown
任何值都可以赋值给any或者unknown类型,所以很多人书写类型会直接给类型,俗称anyscript,但是最好不要都给any类型
let money: any = 4;
money= "I have no money";
money= false;
//--------------------------------------------
let money: unknown = 4;
money= "maybe a string instead"; // OK
money= false; // OK
any和unknown的区别在于,unknown只能赋值给unknown或者any。
let money: any = "I have no money";
let me:unknown = money;
//--------------------------------------------
let money: unknown= "I have no money";
let me:any = money;
//--------------------------------------------
let money: unknown= "I have no money";
let me:string = money; //这里会报错err
联合类型
当想一个变量存在多个类型时使用,用|
分隔
let money:string|number;
money = "I have no money";
money = 10;
交叉类型
将多个类型叠加成一个类型,使用&
定义
interface A {
name: string,
age: number
}
interface B {
name: string,
money: string
}
let me: A & B = {
name: "菜鸡程序员",
age: 18,
money: "I have no money";
};