最近又刷了一遍TypeScript文档,一来是巩固知识,二来是每次看都能Get新知识点
类型系统按照「类型检查的时机」来分类,可以分为动态类型和静态类型。
动态类型是指在运行时才会进行类型检查,这种语言的类型错误往往会导致运行时错误。
JavaScript 是一门解释型语言,没有编译阶段,所以它是动态类型
类型系统按照「是否允许隐式类型转换」来分类,可以分为强类型和弱类型。
ts//数组
interface NumberArray {
[index: number]: number;
}
let fibonacci: NumberArray = [1, 1, 2, 3, 5];
//函数
interface SearchFunc {
(source: string, subString: string): boolean;
}
let mySearch: SearchFunc;
mySearch = function(source: string, subString: string) {
return source.search(subString) !== -1;
}
tsinterface Person {
name: string;
age?: number; // Error
[propName: string]: string;
}
let tom: Person = {
name: 'Tom',
age: 25,
gender: 'male'
};
tslet tom: [string, number];
tom = ['Tom', 25];
tom[0] =30 //Error Type 'number' is not assignable to type 'string'.
tom.push('male');
tom.push(true); //Error Argument of type 'true' is not assignable to parameter of type 'string | number'.
同样的,在接口继承类的时候,也只会继承它的实例属性和实例方法。
tsclass Clock {
hour: number = 1
minute: number = 2
static timestamp = 1000
}
interface ClockConstructor {
new (hour: number, minute: number): Clock
timestamp: number
}
const clock: ClockConstructor = Clock
本文作者:BARM
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!