TypeScript
1. 基础类型
(1) 布尔值:
let isDone: boolean = false;
(2) 数字(支持二进制和八进制字面量):
let age: number = 10;
(3) 字符串:
let newName: string = "小红帽";
newName = "小红";
let sentence: string = `Hello, my name is ${ newName }.`
(4) 数组:
let list: number[] = [1, 2, 3];
let newList: Array<number> = [1, 2, 3];
(5) 元组 Tuple:
let arr: [string, number];
arr = ["小红帽", 5];
(6) 枚举 Enum:
enum Color { Red, Green, Blue }
let e: Color = Color.Green;
type OtherColor = 'red' | 'green' | 'blue';
(7) 所有类型 Any:
let notSure: any = 4;
(8) 相反值 Void:
function warnUser(): void {
console.log("This is my warning message");
}
let unusable: void = undefined;
(9) Null 和 Undefined:
let u: undefined = undefined;
let n: null = null;
(10) Never:
function error(message: string): never {
throw new Error(message);
}
(11) Object:
declare function create(o: object | null): void;
(12) 类型断言(两种形式):
let someValue: any = "this is a string";
其一是“尖括号”语法:
let strLength: number = (<string>someValue).length;
另一个为as语法:
let strLength: number = (someValue as string).length;
2. 接口
TypeScript的核心原则之一是对值所具有的结构进行类型检查
(1) 可选属性:
interface SquareConfig {
color?: string;
width?: number;
}
(2) 只读属性:
interface Point {
readonly x: number;
readonly y: number;
}
(3) 函数类型:
interface SearchFunc {
(source: string, subString: string): boolean;
}
const myAdd = function (x: number, y: number): number { return x + y; };
const myAdd1 = (x: number, y: number) => x + y;
(4) 可索引的类型:
interface StringArray {
[index: number]: string;
}
type SymbolCollectionProps = Readonly<{
symbols: string;
onChangePrice: (symbolId: string, price: number) => void;
onRemoveSymbol: (symbolId: string) => void;
}>;