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就帮助弱类型变成强类型了


相关文章
|
数据库
主题域、概念、逻辑、物理四种模型有什么区别与联系?
主题域、概念、逻辑、物理四种模型有什么区别与联系?
|
5月前
|
安全 前端开发 Java
|
8月前
|
开发框架 .NET C#
浅谈c和c++和c#之间的关系
浅谈c和c++和c#之间的关系
114 0
|
8月前
|
算法 编译器 C++
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
235 0
|
安全
RxSwift特征序列Driver的使用,以及共享附加作用与非共享附加作用的区别?
RxSwift特征序列Driver的使用,以及共享附加作用与非共享附加作用的区别?
187 0
|
Java
类之间的比较
类之间的比较
78 0
|
编译器 测试技术 C语言
C与C++之间的相互调用及函数区别
最近项目需要使用google test(以下简称为gtest)作为单元测试框架,但是项目本身过于庞大,main函数无从找起,需要将gtest框架编译成静态库使用。因为项目本身是通过纯c语言编写,而gtest则是一个c++编写的测试框架,其中必然涉及c与c++之间的相互调用。 注意,本文的前提是,c代码采用gcc等c语言编译器编译c代码,采用g++等c++编译器编译c++代码,如果c和c++代码统一使用g++编译,大部分情况是可以实现两者代码相互调用的。以下为踩坑过程的总结o_O||。 c与c++的函数区别 要了解两者之间如何实现相互调用,必须先了解c与c++之间的函数有什么不同。 c+
136 0
|
存储
对象之间的耦合性
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingfeng812/article/details/8962836   数据耦合 数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递. 一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变量) 来交换输入、输出信息的。
1268 0
类之间的关系共为6种关系
类之间的关系共为6种关系
696 0
类和类之间的关系(2)
类和类之间的关系(2)
145 0
类和类之间的关系(2)