链接:https://www.jianshu.com/p/c8aaba6e8ce0
1、什么是typescript?
Typescript是强类型的Javascript超集,支持ES6语法,支持面向对象编程的概念,如类、接口、继承、泛型等。Typescript并不直接在浏览器上运行,需要编译器编译成纯Javascript来运行。
2、说说Typescripy和Javascript的区别?
typescript javascript
后缀名.ts 后缀名.js
支持强类型和静态类型 支持弱类型
编译时报错 运行时报错
支持面向对象的编程, 是一种脚本语言
如接口、继承、类、泛型 不支持模块、泛型
支持模块、泛型
3、说说Typescript的优缺点?
优点:
1:快速简单,易于学习。
2:编译时提供错误检查, 在代码运行前就会进行错误提示。
3:支持所有的JS库。
4:支持ES6,提供了ES6所有优点和更高的生产力。
5:使用继承提供可重用性。
6:有助于代码结构。
7:通过定义模块来定义命名空间。
缺点:
1:需要长时间的来编译代码。
2:在使用第三方库时,需要有三方库的定义文件,并不是所有三方库都提供了定义文件,提供的定义文件是否准确也值得商榷。
4、Typescript有哪些基础类型?
1:number
2:string
3:boolean
4:Symbol
5:Array
6:Tuple(元组)
7:enum(枚举)
8:object
9:never
表示那些永不存在的值类型。如总是抛出异常或者根本不会有返回值的函数的返回值类型。
10:void
与any相反表示没有任何类型。函数没有返回值时用void。
11:null和undefined
它们是所有类型的子类型。当你指定structNullChecks时,它们只能赋值给void或者它们自己本身。
12:any
5、什么是TS接口?说说它有哪些特性?
TS的核心原则之一就是对值所具有的结构进行类型检查。
它有时被称为“鸭式辩型法”或“结构性子类型化”。
其作用就是为这些类型进行命名,或为你的代码或者三方代码定义契约。
特点:
1:定义对象、数组、函数、类等。
2:接口可以相互继承
3:接口可以继承类
4:可选属性与额外检查
6、说说什么Typescript中的泛型?作用是什么?
泛型代表的是泛指某一类型,更像是一个类型变量。由尖括号包裹<T>。
主要作用是创建逻辑可复用的组件。
泛型可以作用在函数、类、接口上。
函数:
function greet<T>(name: T) {}
类:
class createObj<T> {
name: T
}
接口:
interface IF<T> {
name: T
}
泛型还可以被约束,这样就是任意类型了。
interface TIF {
length: number
}
function test<T extends TIF>(params: T) {
console.log("=========>>>", params.length);
}
泛型约束之类型参数
function getPropoty<T, K extends keyof T>(obj: T, key: K) {
return obj[key];
}
7、说说接口和类型别名type的区别?
- interface只能定义对象类型, type声明的方式可以定义组合类型、元组、交叉类型和原始类型。
- 它并不会真的创建一个新的名字,当你在编译器上将鼠标悬停在定义为该类型别名定义的变量上时返回的是该类型别名引用的对象。相反,接口会创建一个新名字 ,当你把鼠标悬停在该接口定义的变量上时返回的是该接口名。
- 类型别名不能extends和implements
8、什么是类型断言?
类型断言对运行没有什么影响,仅供编译器使用。
向编译器提供我们所希望的分析代码的提示。
表示断言的两种方式:
1:<类型>变量
2:变量 as 类型 (在tsx中只能使用这种方式)