前端面试题--TypeScript

发布时间:2024年01月02日
1.TypeScript是什么,与JavaScript的关系

ts是js的超集,是js更严格的严格版本。ts添加了静态类型系统和编译时的一些特性。

主要的联系和区别:

  1. 类型系统。js是动态类型的语言,不需要在代码中声明变量的类型;ts使用了静态类型系统,在代码中必须明确的声明所有变量的类型,这有利于发现错误,可使大型代码库更容易维护。
  2. 编译。ts需要经过编译才可以在浏览器或node中运行,它需要先转换成js代码在运行。
  3. 可扩展性。因为ts是js的超集,所以可以将现有的js项目迁移到ts,不需要重写整个代码。
  4. 类型安全。静态类型系统,可以使ts代码在编译阶段就可以发现错误,不需要等到运行时才发现。
  5. 高级类型。ts支持泛型、接口等,这可以使代码更加可维护。
2.?TypeScript中的接口是什么,如何使用?

接口在ts中用来定义对象的结构及属性的类型。使用interface定义

//定义接口
interface Person {
    name string;
    age number;
    eat(food string):string
}

//使用接口
class Student implements Person {
    name:string;
    age:number;
    
    constructor(name:string,age:number){
        this.name = name;
        this.age = age;
    }

    eat(food:string){
        return food;
    }    
    
}
3.TypeScript中如何定义和使用泛型?

泛型可以用来在定义函数、接口、类时不提前指定具体的类型,而是在使用的时候为其指定类型。

function fn <T> (x:T,y:T): T{
    return x + y;
}
fn<number>(1,2)
4.TypeScript中any和unknown类型的区别?

any类型表示任何值都可以,它会关闭编译器的类型检查,使用any类型,变量可以被赋值为任意类型。

unknown表示一个未知的值,比any更严格。使用unknown时不可以直接访问其内部属性,需要进行类型断言。这样可以增加类型安全性。

const x:unknown = new Person();
// x.name; 这种方法是错误的

const y = <any> x;  //类型断言
x.name;  
5.TypeScript中,枚举类型如何使用?

枚举类型:用于表示一组命名的常量值。

//定义枚举
enum Color {
    Red = 1,
    Blue = 2,
    Green = 3
}

let bg:Color;
bg = Color.Red;

文章来源:https://blog.csdn.net/weixin_57399180/article/details/135340051
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。