比如你使用了一个联合类型,两个类型有同样的方法,如果你使用不同样的方法的时候就会报错,这个时候就需要使用类型断言来解决
***泛型?
给函数传递一个泛指的类型,定义的时候,不知道传什么,使用的时候传什么就是什么
function copyFields<T extends U, U>(target: T, source: U): T {
for (let id in source) {
target[id] = (<T>source)[id];
}
return target;
}
let x = { a: 1, b: 2, c: 3, d: 4 };
copyFields(x, { b: 10, d: 20, e :30 }); // 这样就会报错, 因为T继承了U, 所以U中有的,T一定要有
在类中如何使用泛型?
// public protected private
// public 允许在类的内外被调用
// private 允许在类内被调用
// protected 允许在类内及继承的子类中调用
class Person {
// public name: string
// private name: string
protected name:string
public say () {
this.name = 'll'
console.log('ll')
}
}
class teach extends Person {
say() {
this.name = 'ii'
}
}
const p = new Person();
p.name = 'xx'
// 构造器
class Person {
// public name: string
// constructor() {
// this.name = name
// }
// 等价下边的代码
constructor(public name: string) {}
}
class Person {
constructor(public name:string) {}
}
class Teacher extends Person {
constructor(public age: number) {
super('ll') // 在使用继承的时候,需要调用super方法,同时还要传递响应的参数
}
}
const t = new Teacher(28)
console.log(t.name)
console.log(t.age)
***TS命名空间?
提供一个类似模块化的区域,可以保护我们不需要对外暴漏的变量
TSC-W命令,使用TS监听模式,TS文件改了,就会触发更新、
Parcel打包TS代码?
引入:使用Parcel打包TS代码,这可能是学习TS阶段相对简单的打包工具-阿里云开发者社区
***全局类型文件?
比如引入jquery, 需要提供一种声明文件,让TS可以识别
declare
***代码的类型描述文件?
***泛型的keyOf?