IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 2021年8月最新出炉前端面试题汇总(一) -> 正文阅读

[JavaScript知识库]2021年8月最新出炉前端面试题汇总(一)

TypeScript相关问题及知识点

Q1: ts中type和interface的区别?

A1: 有相同点与不同点,具体内容如下。

1. 相同点
(1) 两者都可以定义对象和函数。

interface:

 interface Person{
  name: string;
  age: number;
}
interface SetPerson {
  (name: string, age: number): void;
}

type:

type Person= {
  name: string;
  age: number
};
type SetPerson = (name: string, age: number)=> void;

(2) 都可以继承。
interface 定义的对象用extends继承,type&继承。二者之间可以用前面提到的自己的语法互相继承。

2. 不同点:
(1)interface可以声明合并,即声明了多个同样名称的接口可以合并成一个,而type不行。

interface Pesron{
  name: string;
  age: number;
}
interface Person{
  sex: string;
}
/*
Person接口为 {
  name: string;
  age: number;
  sex: string ;
}
*/

(2) type可以声明:基本类型的别名、联合类型、元组等类型,而interface不行。

 // 别名
type Empty=null;
// 联合类型
interface Person1{
	sayHi();
}
interface Person2{
	eat();
}
type Person = Person1 | Person2;
type ex = number | string;
// 元组 数组中元素的数据类型都一般是相同的(any[] 类型的数组可以不同),如果存储的元素数据类型不同,则需要使用元组。
type tuple=[1,'good'];
//type 语句中可以使用 typeof 获取实例的类型进行赋值
let tem = new Number();
type B = typeof tem;

(3)还有其他复杂操作,泛型等。

Q2: ts中interface和class的区别? 分别什么时候使用?

A2: interface和class都能定义数据模型。区别:……

区别:interface只是用来声明对象类型或方法,不做实现;而class是类的声明并实现。

  • 简单的数据模型,直接用于展示的,用 interface 进行定义;
  • 比较复杂的数据模型,有字段属性定义以及一些方法,就需要使用 class 。里面还有constructor构造函数。
  • interface 只在编译时用于类型检查,class 编译完成之后实际上就是 javascript 中的原型(prototype)。
    接口可以通过extends继承类,类可以通过implements去实现接口。有个很好的例子帮助理解。

Q3: ts中的泛型有什么了解?

A3: 案例

1. 不用泛型的话,这个函数可能是下面这样:

function identity(arg: number): number {
    return arg;
}

或者,我们使用any类型来定义函数:

function identity(arg: any): any {
    return arg;
}

any的情况,可以是任何类型。因此,我们需要一种方法使返回值的类型传入参数的类型是相同的。 这时,就用到了T,类型变量,它是一种特殊的变量,只用于表示类型而不是值。

function identity<T>(arg: T): T {
    return arg;
}

这样就可以跟踪函数里使用的类型信息

2. 泛型的使用方法有两种:

(1) 尖括号的形式:
let output = identity< string> (“myString”);// type of output will be ‘string’
这里明确的指定了Tstring类型,并做为一个参数传给函数,使用了<>括起来。

(2) 利用了类型推论,即编译器会根据传入的参数自动地帮助我们确定T的类型:
let output = identity(“myString”); // type of output will be ‘string’

此处参考官方文档改写。

本文为原创文章,转载请注明出处。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 09:31:55  更:2021-08-06 09:32:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 11:29:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码