这是我参与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