02 js语言进阶

2018-12-06  本文已影响9人  MickeyMcneil

Flow和TypeScript的功能

都是用来做JavaScript类型检查的。JavaScript是一种弱类型的,动态类型检查的语言。

弱类型 和 强类型

弱类型:
在定义变量的时候,可以为变量赋任何值,变量的数据类型是可变的。

强类型:
在声明变量的时候,一旦给变量赋值,变量的数据类型就确定。如果之后要赋值为其他类型的数据,必须强制进行数据类型的转换。

动态类型 和 静态类型

动态类型的类型检查在代码运行时进行,静态类型的类型检查在编译时进行。

动态类型可能带来的问题:

  1. 运行功能有偏差
function sum(a, b) {
    return a + b;
}
console.log(sum("kkk", 1))

如上,本想两数求和,却因为传参问题,变成了字符串的拼接

  1. 代码中的错误只有在运行中发现

静态类型的优势和问题:

优势:

  1. 编译时发现代码中的bug
  2. 提高代码的可读性
  3. 减少了复杂的错误处理逻辑
  4. 方便代码重构
  5. 增强IDE(集成开发环境)的功能

问题:

  1. 代码量增加
  2. 可能会降低开发效率

Flow

Flow的基本使用

var 变量: 数据类型 = 数据;
  1. 通过注释方式添加(不会改写js代码,代码再添加完类型之后仍然可以正常运行) -- 不推荐
  2. 通过直接给数据添加类型,改写js代码,如果要正常运行,需使用babel进行转码
// 需要给文件添加@flow标记,否则flow不会对文件进行类型检测
// @flow

var a /*: number*/ = 10;

var a: number = 10;

a = "abc";

console.log(a);


function sum(a: number, b: number) {
    return a + b;
}

sum(1, 2);
sum("123", "456")

使用babel对flow代码转码

  1. package.json
"scripts": {
    "build": "babel ./src -d ./dist"
  },

将src中的文件,转码到dist文件夹中

  1. 新建.babelrc文件
{
  "presets": [
    "flow"
  ]
}

TypeScript

什么是TypeScript?

如何使用TypeScript

上一篇 下一篇

猜你喜欢

热点阅读