TS 简单面试题

214 阅读4分钟

ts优缺点

优点:

  • 支持面向对象的编程特性,比如类、接口、继承、泛型等等。
  • 编译时提供错误检查功能。它将编译代码,如果发现任何错误,在运行脚本之前突出显示这些错误。
  • 它提供了可选静态类型的优点。在这里,Typescript提供了可以添加到变量、函数、属性等的类型。
  • TypeScript支持强类型或静态类型

缺点:

  • TypeScript需要很长时间来编译代码。
  • TypeScript不支持抽象类。

tsc --init执行时提示“无法将tsc项识别为cmdlet....”问题解决

本项目安装ts,在使用npx tsc --init

是否可以将多个.ts文件合并成一个.js文件?如果是,那么如何做?

$ tsc --outFile comman.js file1.ts file2.ts file3.ts 

上面的命令将编译所有这三个.ts文件和结果将存储在一个comman.js文件中.

$ tsc --outFile file1.ts file2.ts file3.ts 

file2.ts和file3.ts将被编译,并将输出放在file1.ts中,现在是file1.ts包含JavaScript代码。

TypeScript是如何在函数中支持可选参数的

可以通过使用问号符号('?')来使用可选参数

function Demo(arg1: number, arg2? :number) {              
}因此,arg1总是必需的,而arg2是一个可选参数  

TS的“接口”和“type”语句有什么区别?

// 接口
interface X {  
    a: number  
    b: string  
} 
// type
type X = {  
    a: number  
    b: string  
}; 

接口:

  • 接口声明总是引入指定的对象类型。
  • 接口可以在extends或implements子句中命名。
  • 接口创建一个到处使用的新名称。
  • 一个接口可以有多个合并声明。

type:

  • 类型别名声明可以为任何类型(包括基元类型、联合类型和交集类型)引入名称。
  • 对象类型文字的类型别名不能在“扩展”或“实现”子句中命名。
  • 类型别名不创建新名称。
  • 对象类型字面量的类型别名不能有多个合并声明。

什么是TS接口?说说它有哪些特性

TS的核心原则之一就是对值所具有的结构进行类型检查。

特点:

1:定义对象、数组、函数、类等。

2:接口可以相互继承

3:接口可以继承类

4:可选属性与额外检查

// 定义对象
interface Cat {
   color:string
}
let oneCat:Cat = {
   color:"orange"
}
// 定义数组
interface Grade {
   [index:number]:string;
}
let grade:Grade = ["one","two"]
//定义函数
interface Greet {
   (name:string):void
}
let greet:Greet = function (){
  console.log("hello")
}
// 定义类
interface Constructor {
 (n:string,a:number):Person
}
interface Person {
   name:string;
   age:number;
}
class People implements Person {
   name:string;
   age:number;
   
   constructor(name:string,age:number){
   this.name = name;
   this.age = age
   }
}
// 接口相互继承
interface Shape {
   color:string
}
interface  Sqaure extend Shape {
 sideLength:number
}
let square:Sqaure = {
   color:"red",
   sideLength:11
}

什么是Rest参数?

rest参数用于向函数传递零个或多个值。它是通过在参数前加上三个点字符(‘…’)来声明的。它允许函数在不使用arguments对象的情况下拥有可变数量的参数。当我们有不确定数量的参数时,这是非常有用的。

rest参数要遵循的规则:

  • 一个函数中只允许有一个rest参数。
  • 它必须是数组类型。
  • 它必须是参数列表中的最后一个参数。

TypeScript中的方法重写是什么

如果子类(子类)具有与父类中声明的相同的方法,则称为方法覆盖。换句话说,在派生类或子类中重新定义基类方法。

方法重写的规则

  • 该方法必须具有与父类相同的名称
  • 该方法必须具有与父类相同的参数。
  • 必须有一个IS-A关系(继承)。

如何调用基类中的构造函数

super()

如何实现类的继承

extends

Typescript的装饰器是什么

装饰器是一种特殊类型的声明,它能被附加在类、方法、属性、访问符、参数上。

装饰器使用@expression这种方式,expression求值后必须为一个函数,它在运行时调用,被装饰器声明的信息作为参数传入。

什么是Mixins

一种通过重用组件构建类的方法。

不通过类的直接继承来实现,而是将基类作为接口来实现。对于基类实例化部分在子类中实现,基类中原型的部分在子类中进行声明占位,然后通过一个Minxin函数将基类上的原型属性拷贝到子类上。