学习TypeScript分清强弱、动态静态类型语言

375 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

什么是TypeScript

它是拥有类型系统的JavaScript的超集,可以编译成JavaScript。

注意三个要点:

  • 类型检查:TS会在编译代码时,进行严格的静态类型检查(在编码阶段,发现可能存在的隐患)
  • 语言扩展:TS包括ES6和未来提案中的特性,比如异步操作和装饰器,也会从其他语言借鉴某些特性,比如接口和抽象类
  • 工具属性:TS可以编译成标准JS,可以在任何浏览器和操作系统运行

为什么使用TypeScript

  • 比如VScode具有强大的自动补全、导航和重构功能,使得接口定义可以直接代替文档,同时提高开发效率,降低维护成本。
  • 帮助我们重塑“类型思维”,接口提供方被迫取思考 API的边界,从代码编写者蜕变为代码的设计者
  • 让你在前端的路上走得更稳,走的更远

思维方式决定了编程习惯

编程习惯奠定了工程质量

工程质量划定了能力边界

强弱类型语言

强类型语言:当一个对象从调用函数传递到被调用函数时,其类型必须与被调用函数中声明的类型兼容

A(){
	B(x)
}
B(y){
	//y可以被赋值x,程序运行良好
}

强类型语言:不允许改变变量的数据类型,除非进行强制类型转换

class C{
    public static void main(String[] args){
        int x = 1;
        bollean y = true;
        x = y //boolean cannot be converted to int
    }
}

弱类型语言:变量可以被赋予不同的数据类型

let x = 1;
let y = true;
x = y //true

静动态类型语言

静态类型语言:在编译阶段确定所有变量的类型

动态类型语言:在执行阶段确定所有变量的类型

静态类型语言动态类型语言
对类型极度严格对类型非常宽松
立即发现错误Bug可能隐藏数月甚至数年
运行时性能好运行时性能差
自文档化可读性差

动态类型语言的支持者认为:

性能是可以改善的(V8引擎),而语言的灵活性更重要

隐藏的错误可以通过单元测试发现

文档可以通过工具生成

可以改善的(V8引擎),而语言的灵活性更重要

隐藏的错误可以通过单元测试发现

文档可以通过工具生成

在这里插入图片描述