1 可以为值声明类型
function greeter(person: string) {2 定义接口(范式)
注:js中没有
interface Person {
firstName: string;
lastName: string;
}3 public等同于创建了同名的成员变量。
class Student {
fullName: string;
constructor(public firstName, public middleInitial, public lastName) {
this.fullName = firstName + " " + middleInitial + " " + lastName;
}
}4 基础类型
let isDone: boolean = false;
let decLiteral: number = 6;
let name: string = "bob";
let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];5 元组
元组类型允许表示一个已知元素数量和类型的数组
let x: [string, number];6 虚拟枚举类型
对JavaScript标准数据类型的一个补充,类似javaenum Direction { // 数字枚举
Up,
Down,
Left,
Right,
}
// 字符串枚举
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT",
}7 any表示任意类型
let notSure: any = 4;
let list: any[] = [1, true, "free"];8 never类型表示的是那些永不存在的值的类型
适合场景:抛出异常// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}9 Object表示非原始类型
declare function create(o: object | null): void;
create({ prop: 0 }); // OK10 类型断言
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;11 ?可选属性
interface SquareConfig {
color?: string;
width?: number;
}12 只读属性
readonly
13 类和继承
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
let greeter = new Greeter("world");14 函数
function add(x: number, y: number): number {
return x + y;
}15 泛型
function identity(arg: any): any {
return arg;
}
function identity<T>(arg: T): T {
return arg;
}
//联合使用
let output = identity<string>("myString"); // type of output will be 'string'