02-TsVSJs之间的区别

简介: 02-TsVSJs之间的区别

一、观察

1. JS 平常的数据类型

let val;
val = 123;
val = "123";
val = true;
val = [1, 3, 5];

注意点:

由于JS是弱类型的, 所以只要定义了一个变量, 就可以往这个变量中存储任意类型的数据

也正是因为如此, 所以会给我们带来一个问题

2. 假设a是一个数组, b是一个数值

function test(a, b) {
    return a.length + b;
}
> let res = test([1, 3, 5], 10);
console.log(res);
上面会正常的输出 : 13

3. 好这只是我们的期望a是数组假如?

> let res = test(1, 10);
console.log(res);
上面则会输出什么呢?

二、问题

经过我们的小例子可以看出JS是不严格的未在编写时候就提示这里是错误的!!!

1. TS

安装我们的TS 提前要有node环境哦

打开命令行安装 npm install typescript -g 全局安装一下

它会安装一个 tsc的编译工具 就和less sass一样编译成可运行的js文件

2.体验TS

创建02-体验.ts文件

注意点: 由于TS 并不是一门新的语言,而是对JS对扩展, 所以我们可以在TS文件当中直接编写JS代码

let val: number; // 定义指定参数类型
// 数字
val = 123;
// 报错
val = "123";
val = true;
val = [1, 3, 5]

46c31ecd329fca956ce676d5a89420e.png

3. 严格的TS

期望a是一个数组, b是一个数值

// 定义限制any[]为数组类型 number 数字
function test(a:any[], b:number) {
    return a.length + b;
}
// 正确
> let res = test([1,3,5], 10);
console.log(res);
// 直接编译器提示错误
let res = test(1, 10);
console.log(res);

3d489fa54455ca80ae78713f6c5ccf5.png

运行02-体验TS.ts

利用我们刚刚下载的TS插件当中给我们安装了一个tsc的东西

af1cd0423b07343ac4315356b46cc42.png

编译成功后

7141d3d0a88bf16a0ca7ff819ef6304.png

编译错误代码

0fed51e653731e48861f8bcb5c9f416.png

提示期望得到一个数组,这样子TS就帮助弱类型变成强类型了


相关文章
|
存储 小程序 JavaScript
【微信小程序】-- 自定义组件 -- 数据、方法和属性(三十三)
【微信小程序】-- 自定义组件 -- 数据、方法和属性(三十三)
|
监控 数据挖掘 Python
python3解析wav文件获取dtmf值
【8月更文挑战第5天】这段Python代码示例展示了如何解析WAV文件并检测其中的双音多频(DTMF)信号。它首先打开并读取WAV文件的内容,接着利用`numpy`和`scipy`库计算频谱图。通过定义标准的DTMF频率对,并在频谱中寻找这些特定的频率组合,从而识别出DTMF值。此代码可用于电话系统监控或音频数据分析项目中,以自动化检测和处理DTMF信号。
246 8
|
JavaScript 前端开发
15 Uncaught TypeError: Cannot set properties of null (setting ‘onclick‘)
这篇文章解释了在HTML文档中因JavaScript代码在页面元素加载之前执行导致的"Cannot set properties of null (setting ‘onclick’)"错误,并提供了将JavaScript代码置于`<body>`标签内或使用`window.onload`事件确保DOM完全加载后再绑定事件处理器的解决办法。
15 Uncaught TypeError: Cannot set properties of null (setting ‘onclick‘)
|
算法 JavaScript 前端开发
Web Audio API 第4章 音调与频域
Web Audio API 第4章 音调与频域
|
监控 关系型数据库 MySQL
分享60个PHP源码,总有一款适合您
分享60个PHP源码,总有一款适合您
566 1
|
JavaScript 前端开发 编译器
神器!快速将JavaScript迁移到TypeScript
神器!快速将JavaScript迁移到TypeScript
501 0
|
小程序 JavaScript 前端开发
分享63个微信小程序源代码总有一个是你想要的
分享63个微信小程序源代码总有一个是你想要的
6822 1
|
JavaScript 小程序
vue、uniapp、微信小程序在class上添加判断的语法
vue、uniapp、微信小程序在class上添加判断的语法
1133 0
|
Ubuntu Linux Docker
Win11彻底卸载WSL2系统(去除导航窗格Linux图标)
Win11彻底卸载WSL2系统(去除导航窗格Linux图标)
14301 0
|
JavaScript 前端开发 数据安全/隐私保护
[✔️]cocos creator 2.x无法加载.js后缀的npm包
[✔️]cocos creator 2.x无法加载.js后缀的npm包
380 0