1.TypeScript是什么宁改?
TypeScript是微軟開發(fā)的靜態(tài)強(qiáng)類型編程語言魂莫,它是JavaScript的超集。
2.如何獲取TypeScript耙考?
2.1安裝TypeScript
$ npm install -g typescript
2.2編譯TypeScript文件
$ tsc helloWorld.ts
#helloWorld.ts => helloWorld.js
2.TypeScript的基礎(chǔ)類型
2.1 String類型
let str: String = 'hello typescript';
# var str = 'hello typescript';
2.2Boolean類型
let bol: Boolean = true;
# var bol = true;
2.3Number類型
let count: Number = 12;
var count = 12;
2.4Array類型
let list: number[] = [1, 2, 3];
var list = [1, 2, 3];
2.5Enum枚舉類型
2.5.1數(shù)字枚舉
enum result {
Success,
Pending,
Fail
}
# js
var result;
(function (result) {
result[result["Success"] = 0] = "Success";
result[result["Pending"] = 1] = "Pending";
result[result["Fail"] = 2] = "Fail";
})(result || (result = {}));
// 如果指定了第一個(gè)值為1倦始,后續(xù)則會(huì)累加
enum result {
Success = 1,
Pending,
Fail
}
#js
var result;
(function (result) {
result[result["Success"] = 1] = "Success";
result[result["Pending"] = 2] = "Pending";
result[result["Fail"] = 3] = "Fail";
})(result || (result = {}));
result[1] // "Success"
result.Success // 1
2.5.2字符串枚舉
enum Direction {
NORTH = "NORTH",
SOUTH = "SOUTH",
EAST = "EAST",
WEST = "WEST",
}
Direction.NORTH // "NORTH"
Direction["NORTH"] // "NORTH"
# js
var Direction;
(function (Direction) {
Direction["NORTH"] = "NORTH";
Direction["SOUTH"] = "SOUTH";
Direction["EAST"] = "EAST";
Direction["WEST"] = "WEST";
})(Direction || (Direction = {}));
Direction.NORTH; // "NORTH"
Direction["NORTH"]; // "NORTH"
2.6 any類型
在Typescript中任何類型都可以被歸為 any 類型。這讓 any 類型成為了類型系統(tǒng)的頂級(jí)類型最易。
let result: any = 123;
result = "hello";
result = [1, 2, 3];
2.7Unknow類型
就像所有類型都可以賦值給 any怒坯,所有類型也都可以賦值給 unknown剔猿。這使得 unknown 成為 TypeScript 類型系統(tǒng)的另一種頂級(jí)類型(另一種是 any)。
let value: unknown;
value = true; // OK
value = 42; // OK
value = "Hello World"; // OK
value = []; // OK
value = {}; // OK
value = Math.random; // OK
value = null; // OK
value = undefined; // OK
value = new TypeError(); // OK
value = Symbol("type"); // OK
那么any類型與unknown類型有什么區(qū)別呢?請(qǐng)參考typescript中any與unknown的區(qū)別归敬。
2.8Tuple類型(元組)
元組可以理解為固定長(zhǎng)度的數(shù)組鄙早,可用于定義具有有限數(shù)量的未命名屬性的類型。
let tupleType: [String, Number] = ["hello", 123]
# js
var tupleType = ["hello", 123];
2.9 Void類型
void 類型像是與 any 類型相反限番,表示沒有任何類型,當(dāng)一個(gè)函數(shù)沒有返回值時(shí)扩灯,通常見到返回值為void。
function foo():void {
console.log("this is a message");
}
# js
function foo() {
console.log("this is a message");
}
2.10 Null和undefined類型
TypeScript 里珠插,undefined 和 null 兩者有各自的類型分別為 undefined 和 null。
let u: undefined = undefined;
let n: null = null;
# js
var u = undefined;
var n = null;
2.11 Never類型
Never類型指永不存在的類型捻撑。 例如缤底,never 類型是那些總是會(huì)拋出異常或根本就不會(huì)有返回值的函數(shù)表達(dá)式或箭頭函數(shù)表達(dá)式的返回值類型个唧。
function assertNever(x: never): never {
throw new Error("Unexpected object: " + x);
}
# js
function assertNever(x) {
throw new Error("Unexpected object: " + x);
}