Typescript学习小书 - (continually updated)
什么是Typescript(TS),为什么要学习它
TypeScript is a language for application-scale JavaScript. TypeScript adds optional types to JavaScript that support tools for large-scale JavaScript applications for any browser, for any host, on any OS. TypeScript compiles to readable, standards-based JavaScript.
简单来说,TS就是JS的超集,它可以编译成纯JS,但是它又增加了很多新的选项,可以让JS开发更加规范合理。
废话不多说,直接开始TS
如果需要了解如何配置ts,可以直接到官网查看具体的安装配置方法
TS中的数据类型
boolean
let isDone: boolean = false;
string
let name: string = "bob"; name = "smith"; // 当然 模板字符串的写法也是可以的 let foo:number = 7; let bar:string = `你喜欢${foo}`
number
let decLiteral: number = 6; let hexLiteral: number = 0xf00d; let binaryLiteral: number = 0b1010; let octalLiteral: number = 0o744;
array
let list: number[] = [1, 2, 3]; // 另外一种书写方式: let otherList: Array<number> = [1, 2, 3];
Tuple
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 string和number类型的元组。简单来说就是一个每个索引值都被固定好类型的数组。
let x: [string, number]; x = ['hello', 10]; // OK x = [10, 'hello']; // Error
enum
enum类型是对JavaScript标准数据类型的一个补充。 像C#等其它语言一样,使用枚举类型可以为一组数值赋予友好的名字。增加了易读性
如果没有指定整数型常熟,则对应其下标,当前项的下标会由前一项递增1,起始默认为0enum Flag {success: 1, error: 2} let res:Flag = Flag.success; console.log(res); // 1
any
(万金油类型) 有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any类型来标记这些变量
let num:any = 1; num = "1"; // ok
void
某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void
function warnUser(): void { console.log("This is my warning message"); }
null undefined
TypeScript里,undefined和null两者各自有自己的类型分别叫做undefined和null。 和 void相似,它们的本身的类型用处不是很大:
// Not much else we can assign to these variables! let u: undefined = undefined; let n: null = null;
never
never类型表示的是那些永不存在的值的类型。 例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never类型,当它们被永不为真的类型保护所约束时。
Object
object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。使用object类型,就可以更好的表示像Object.create这样的API。例如:
declare function create(o: object | null): void; create({ prop: 0 }); // OK create(null); // OK create(42); // Error create("string"); // Error create(false); // Error create(undefined); // Error