1.0? typescript 類型斷言
let someValue: any = "this is a string";
let strLength: number = (someValue).length;
另一個(gè)為as語(yǔ)法:
let? someValue: any = "this is a string";
let? strLength: number =? ( someValueasstring ).length;
兩種形式是等價(jià)的奢浑。 至于使用哪個(gè)大多數(shù)情況下是憑個(gè)人喜好示血;然而混移,當(dāng)你在TypeScript里使用JSX時(shí)廓译,
只有?as語(yǔ)法斷言是被允許的。
2.0可選屬性
接口里的屬性不全都是必需的乙濒。 有些是只在某些條件下存在陕赃,或者根本不存在。 可選屬性在應(yīng)用“option bags”模式時(shí)很常用颁股,即給函數(shù)傳入的參數(shù)對(duì)象中只有部分屬性賦值了么库。
下面是應(yīng)用了“option bags”的例子:// 與function的可選參數(shù)類似
interfaceSquareConfig {??
????color?:string;?
? ? width?:number;
}
function createSquare(config: SquareConfig):{color:string; area:number} {
????let newSquare = {color:"white", area:100};
????if( config.color) {? ??
????newSquare.color = config.color;??
????}if(config.width) {? ??
????newSquare.area = config.width * config.width;?
?????}
????return? newSquare;
}
let mySquare = createSquare ( {color:"black"} ) ;
3.0 只讀屬性
interfacePoint {
?????readonly x:number;
?????readonly y:number;
}
你可以通過(guò)賦值一個(gè)對(duì)象字面量來(lái)構(gòu)造一個(gè)Point。 賦值后甘有,?x和y再也不能被改變了诉儒。
letp1: Point = { x:10, y:20};
p1.x =5;// error!
4.0繼承接口
和類一樣,接口也可以相互繼承亏掀。 這讓我們能夠從一個(gè)接口里復(fù)制成員到另一個(gè)接口里忱反,可以更靈活地將接口分割到可重用的模塊里。
interfaceShape {? ?
?color:string;
}?
interface Square extends Shape {? ??
sideLength:number;?
}
let square = { };
square.color ="blue";
square.sideLength =10;
5.0 泛型
在像C#和Java這樣的語(yǔ)言中滤愕,可以使用泛型來(lái)創(chuàng)建可重用的組件温算,
functionidentity(arg: T):T{
? ? return arg;
}
我們給identity添加了類型變量T。?T幫助我們捕獲用戶傳入的類型(比如:number)该互,之后我們就可以使用這個(gè)類型。 之后我們?cè)俅问褂昧?T當(dāng)做返回值類型【禄現(xiàn)在我們可以知道參數(shù)類型與返回值類型是相同的了宇智。 這允許我們跟蹤函數(shù)里使用的類型的信息。
我們把這個(gè)版本的identity函數(shù)叫做泛型胰丁,因?yàn)樗梢赃m用于多個(gè)類型随橘。 不同于使用?any,它不會(huì)丟失信息锦庸,像第一個(gè)例子那像保持準(zhǔn)確性机蔗,傳入數(shù)值類型并返回?cái)?shù)值類型。
6.0枚舉
使用枚舉我們可以定義一些帶名字的常量。 使用枚舉可以清晰地表達(dá)意圖或創(chuàng)建一組有區(qū)別的用例萝嘁。
enum Direction {?
?Up =1,?
?Down,?
?Left,?
?Right
}
如上梆掸,我們定義了一個(gè)數(shù)字枚舉,?Up使用初始化為?1牙言。 其余的成員會(huì)從?1開始自動(dòng)增長(zhǎng)酸钦。 換句話說(shuō),Direction.Up的值為?1咱枉,?Down為?2卑硫,?Left為?3,?Right為?4蚕断。
之后有時(shí)間在接著寫