TypeScript
TypeScript是一種由微軟開發(fā)的自由和開源的編程語言。它是JavaScript的一個(gè)超集猾封,而且本質(zhì)上向這個(gè)語言添加了可選的靜態(tài)類型和基于類的面向?qū)ο缶幊獭?/p>
Visual Code 安裝 TypeScript
npm install -g typescript
構(gòu)建第一個(gè)TypeScript文件
- 創(chuàng)建文件 *** greeter.ts *** 鍵入如下內(nèi)容
function greeter(person) {
return "Hello, " + person;
}
let user = "Jane User";
console.log(greeter(user));
- 編譯代碼
命令行運(yùn)行如下代碼
tsc greeter.ts
當(dāng)前目錄下生成一個(gè)文件名相同的js文件 greeter.js
使用node 執(zhí)行當(dāng)前js文件
node ./greeter.js
- 可以看到當(dāng)前Terminal輸出
Hello, Jane User
- 通過以上代碼也就完成了TypeScript第一個(gè)小Demo
類型注釋
- TypeScript里的類型注解是一種輕量級(jí)的為函數(shù)或變量添加約束的方式.我們希望 greeter函數(shù)接收一個(gè)字符串參數(shù)馋没。 然后嘗試把 greeter的調(diào)用改成傳入一個(gè)數(shù)組:
function greeter(person: string) {
return "Hello," + person;
}
let user = [ '0' , '1' , '2'];
console.log(greeter(user));
- 重新編譯(可以Terminal報(bào)如下錯(cuò)誤)
Argument of type 'string[]' is not assignable to parameter of type 'string'.
接口(interface)
- 在TypeScript里秧耗,只在兩個(gè)類型內(nèi)部的結(jié)構(gòu)兼容那么這兩個(gè)類型就是兼容的枉长。 這就允許我們?cè)趯?shí)現(xiàn)接口時(shí)候只要保證包含了接口要求的結(jié)構(gòu)就可以,而不必明確地使用 implements語句裆蒸。
interface Person {
firstName: string;
lastName: string;
}
function greeter(person: Person) {
return "Hello," + person.firstName + " " + person.lastName;
}
let user = {
firstName: "Jane",
lastName: "User"
}
console.log(greeter(user));
- 編譯運(yùn)行
Hello,Jane User
類(class)
- TypeScript支持JavaScript的新特性熔萧,比如支持基于類的面向?qū)ο缶幊獭?/li>
- 創(chuàng)建一個(gè)Student類,它帶有一個(gè)構(gòu)造函數(shù)和一些公共字段。
- 注意類和接口可以一起共作佛致,程序員可以自行決定抽象的級(jí)別
- 在構(gòu)造函數(shù)的參數(shù)上使用public等同于創(chuàng)建了同名的成員變量.
- 創(chuàng)建文件 student.ts
class Student {
fullName: string;
constructor(public firstName, public middleInitial, public lastName) {
this.fullName = firstName + ' ' + middleInitial + ' ' + lastName;
}
}
interface Person {
firstName: string;
lastName: string;
}
function greeter(person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
let user = new Student('Jane',"M.","User");
console.log(greeter(user));
- 編譯運(yùn)行
Hello, Jane User