這是我參與8月更文挑戰的第8天,活動詳情查看:8月更文挑戰前端
由於Typescript的持續火爆,分享下TS的經常使用知識點,咱們一塊兒學習交流,一塊兒加油!java
在TS中,時候須要一個類型能被一個以上的類型賦值,因此就須要這個類型兼容其餘類型算法
let a: string | number;
let b: number | string | boolean;
let c: number | string | boolean | null;
let str: string = "str";
let num: number = 1;
// a 既能夠被賦值string 也能夠支持number
a = str;
a = num;
複製代碼
接口兼容:屬性只能多不能少typescript
interface Person {
name: string;
age: number;
}
interface Men {
name: string;
age: number;
gender: string;
}
let p: Person = {
name: "tom",
age: 11,
};
let m: Men = {
name: "tom",
age: 11,
gender: "male",
};
// person 能夠被賦值 Person 能夠被賦值Men
let person: Person = p;
person = m;
複製代碼
1.函數兼容的時候 參數只能少不能多,返回值只能多不能少c#
2.rest 和 可選參數也是兼容的*markdown
interface FN1 {
(a: number, b: number): void;
}
interface FN2 {
(a: number): void;
}
interface FN22 {
(a?: number): void;
}
interface FN222 {
(...rest: number[]): void;
}
let fn1: FN1 = (a: number, b: number): void => {};
let fn2: FN2 = (a: number): void => {};
let fn22: FN22 = (a?: number): void => {};
let fn222: FN222 = (...rest: number[]): void => {};
// 參數只能少不能多
let fnn: FN1;
fnn = fn1;
fnn = fn2;
// rest 和 可選參數也是兼容的
fnn = fn22;
fnn = fn222;
interface FN3 {
(a: number, b: number): { a: number; b: number };
}
interface FN4 {
(a: number, b: number): { a: number; b: number; c: string };
}
let fn3: FN3 = (a: number, b: number): { a: number; b: number } => ({
a: number,
b: number,
});
let fn4: FN4 = (a: number): { a: number; b: number; c: string } => ({
a: number,
b: number,
c: string,
});
// 返回值只能多不能少
let fnn1: FN3;
fnn1 = fn3;
fnn1 = fn4;
複製代碼
構造函數不會被檢查網絡
class Fish {
// 構造函數不會被檢查
constructor(public a: number, public b: number) {}
}
class Shark extends Fish {
name: string;
// 構造函數不會被檢查
constructor(name: string) {
super(1, 1);
this.name = name;
}
}
let fish: Fish;
fish = new Fish(1, 1);
fish = new Shark("111");
複製代碼
interface F1<T> {
a: T;
}
let f1: F1<string> = { a: "1" };
let f2: F1<number> = { a: 1 };
// 報錯
// f1=f2
interface F2<T> {}
let f3: F2<string> = { a: "1" };
let f4: F2<number> = { a: 1 };
// 正確
f3 = f4;
複製代碼
TS 中繼承了不少相似c# 和 java裏面的的特性好比 抽象類app
abstract class C {
abstract fn1(): number;
// 抽象類中也能夠定義非抽象方法
fn2(): number {
return 2;
}
}
class D extends C {
//必須實現抽象類
fn1(): number {
return 1;
}
// 可是fn2能夠不實現
}
複製代碼
// let c =new C()//報錯
let b =new D()
複製代碼
你們喜歡的能夠看看個人專欄 (TypeScript經常使用知識) 我會盡可能保持天天晚上更新,若是喜歡的麻煩幫我點個贊,十分感謝函數
你們若是喜歡「算法」的話,能夠看看我分享的另一個專欄(前端搞算法)裏面有更多關於算法的題目的分享,但願能幫助你們更深的理解算法oop
文章內容目的在於學習討論與分享學習算法過程當中的心得體會,文中部分素材來源網絡,若有侵權,請聯繫刪除,郵箱 182450609@qq.com