一 我要涨知识 —— TypeScript 常见面试题( 四 )

  • never 表示一个不包含值的类型 , 即表示永远不存在的值 。
  • 拥有 void 返回值类型的函数能正常运行 。拥有 never 返回值类型的函数无法正常返回 , 无法终止 , 或会抛出异常 。
  • 10、说一说 TypeScript 中的类及其特性 。TypeScript 引入了类 , 以便它们可以利用诸如封装和抽象之类的面向对象技术的好处 。
    TypeScript 编译器将 TypeScript 中的类编译为普通的 JavaScript 函数 , 以跨平台和浏览器工作 。
    一个类包括以下内容:
    • 构造器(Constructor)
    • 属性(Properties)
    • 方法(Methods)
    class Employee {empID: number;empName: string;constructor(ID: number, name: string) {this.empName = name;this.empID = ID;}getSalary(): number {return 40000;}}类的其他特性有:
    • 继承(Inheritance)
    • 封装(Encapsulation)
    • 多态(Polymorphism)
    • 抽象(Abstraction)
    11、TypeScript 中的类型断言是什么?TypeScript 中的类型断言的工作方式类似于其他语言中的类型转换 , 但没有 C# 和 Java 等语言中可能的类型检查或数据重组 。类型断言对运行时没有影响 , 仅由编译器使用 。
    类型断言本质上是类型转换的软版本 , 它建议编译器将变量视为某种类型 , 但如果它处于不同的形式 , 则不会强制它进入该模型 。
    12、TypeScript 中的模块是什么?TypeScript 中的模块是相关变量、函数、类和接口的集合 。你可以将模块视为包含执行任务所需的一切的容器 。可以导入模块以轻松地在项目之间共享代码 。
    module module_name{class xyz{export sum(x, y){return x+y;}}}13、解释如何使用 TypeScript 中的 mixin 。Mixin 本质上是在相反方向上工作的继承 。Mixins 允许你通过组合以前类中更简单的部分类设置来构建新类 。
    相反 , 类A继承类B来获得它的功能 , 类B从类A需要返回一个新类的附加功能 。
    14、TypeScript 中什么是装饰器 , 它们可以应用于什么?装饰器是一种特殊的声明 , 它允许你通过使用@注释标记来一次性修改类或类成员 。每个装饰器都必须引用一个将在运行时评估的函数 。
    例如 , 装饰器@sealed将对应于sealed函数 。任何标有 的@sealed都将用于评估sealed函数 。
    function sealed(target) {// do something with 'target' ...}它们可以附加到:
    • 类声明
    • 方法
    • 配件
    • 特性
    • 参数
    注意:默认情况下不启用装饰器 。要启用它们 , 你必须experimentalDecorators从tsconfig.json文件或命令行编辑编译器选项中的字段 。
    15、使用 ts 实现一个判断入参是否是数组类型的方法?unknown 用于变量类型不确定 , 但肯定可以确定的情形下 , 比如下面这个示例中 , 入参总归会有个值 , 根据这个值的类型进行不同的处理 , 这里使用 unknown 替代 any 则会更加类型安全 。
    function isArray(x: unknown): boolean {if (Array.isArray(x)) {return true;}return false;}

    经验总结扩展阅读