1、ts 中的 any 和 unknown 有什么区别?unknown 和 any 的主要区别是 unknown 类型会更加严格:在对 unknown 类型的值执行大多数操作之前,我们必须进行某种形式的检查 。而在对 any 类型的值执行操作之前,我们不必进行任何检查 。
举例说明:
let foo: any = 123;console.log(foo.msg); // 符合TS的语法let a_value1: unknown = foo; // OKlet a_value2: any = foo; // OKlet a_value3: string = foo; // OKlet bar: unknown = 222; // OKconsole.log(bar.msg); // Errorlet k_value1: unknown = bar; // OKlet K_value2: any = bar; // OKlet K_value3: string = bar; // Error
因为bar是一个未知类型(任何类型的数据都可以赋给 unknown 类型),所以不能确定是否有msg属性 。不能通过TS语法检测;而 unknown 类型的值也不能将值赋给 any 和 unknown 之外的类型变量
总结:
any 和 unknown 都是顶级类型 , 但是 unknown 更加严格 , 不像 any 那样不做类型检查,反而 unknown 因为未知性质,不允许访问属性,不允许赋值给其他有明确类型的变量 。
2、说说你对 typescript 的理解?与 javascript 的区别?2.1、TS是什么?TypeScript 是 JavaScript 的类型的超集,支持ES6语法,支持面向对象编程的概念,如类、接口、继承、泛型等
超集,不得不说另外一个概念,子集,怎么理解这两个呢,举个例子,如果一个集合A里面的的所有元素集合B里面都存在,那么我们可以理解集合B是集合A的超集 , 集合A为集合B的子集
文章插图
其是一种静态类型检查的语言 , 提供了类型注解 , 在代码编译阶段就可以检查出数据类型的错误
同时扩展了JavaScript 的语法,所以任何现有的JavaScript 程序可以不加改变的在 TypeScript 下工作
为了保证兼容性,typescript在编译阶段需要编译器编译成纯Javascript来运行,是为大型应用之开发而设计的语言,如下:
tsx文件如下:
const hello : string = "Hello World!"console.log(hello)复制代码
编译文件后:const hello = "Hello World!"console.log(hello)复制代码
2.2、特性typescript的特性主要有如下:- 类型批注和编译时类型检查 :在编译时批注变量类型
- 类型推断:ts中没有批注变量类型会自动推断变量的类型
- 类型擦除:在编译过程中批注的内容和接口会在运行时利用工具擦除
- 接口:ts中用接口来定义对象类型
- 枚举:用于取值被限定在一定范围内的场景
- Mixin:可以接受任意类型的值
- 泛型编程:写代码时使用一些以后才指定的类型
- 名字空间:名字只在该区域内有效,其他区域可重复使用该名字而不冲突
- 元组:元组合并了不同类型的对象,相当于一个可以装不同类型数据的数组
function Add(left: number, right: number): number { return left + right;}对于基本类型的批注是number、bool和string,而弱或动态类型的结构则是any类型2.4、类型推断当类型没有给出时 , TypeScript编译器利用类型推断来推断类型,如下:
let str = 'string'变量str被推断为字符串类型,这种推断发生在初始化变量和成员,设置默认参数值和决定函数返回值时
如果由于缺乏声明而不能推断出类型,那么它的类型被视作默认的动态any类型
2.5、接口接口简单来说就是用来描述对象的类型 数据的类型有number、null、string等数据格式,对象的类型就是用接口来描述的
interface Person {name: string;age: number;}let tom: Person = {name: 'Tom',age: 25};2.6、TS 与 JS 的区别
- TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法
- TypeScript 可处理已有的 JavaScript 代码 , 并只对其中的 TypeScript 代码进行编译
- TypeScript 文件的后缀名 .ts (.ts,.tsx,.dts),JavaScript 文件是 .js
- 在编写 TypeScript 的文件的时候就会自动编译成 js 文件
文章插图
3、为什么推荐使用 TypeScript ?TypeScript是微软公司开发和维护的一种面向对象的编程语言 。它是JavaScript的超集,包含其所有元素 。
强类型和弱类型、静态类型和动态类型是两组不同的概念 。
类型强弱是针对类型转换是否显示来区分,静态和动态类型是针对类型检查的时机来区分 。
推荐阅读
- 一个超经典 WinForm 卡死问题的再反思
- 一加9pro和小米11哪个好_一加9pro和小米11对比
- 一加9RT和一加10Pro哪个更值得买-参数区别
- 红警怎么局域网联机对战(红警怎么局域网跟好友一起玩)
- 同一个wifi怎么联机玩红警(win10红警2局域网联机)
- DNF怎么让装备增幅(dnf一次性增幅器怎么用)
- 孤单一生的出生时间 他们一生难遇知己
- uniapp/微信小程序 项目day03
- 【炫丽】从0开始做一个WPF+Blazor对话小程序
- 宫灯杏仁蜜身体乳 首先…不得不吐槽一下它这个味道… 一股超级浓郁的苦杏子味儿啊!