新手入门typeScript
强类型与弱类型(类型安全)
- 强类型不允许随意的隐士类型转换,而弱类型是允许的
- 变量类型允许随时改变的特点,不是强弱类型的差异
静态类型与动态类型(类型检查)
- 静态类型:一个变量声明时它的类型就是明确的,如果声明后,它的类型就不允许修改。
- 动态类型:运行阶段才能够明确变量类型,而且变量的类型随时可以改变。
JavaScript 自有类型系统的问题
- 任性:缺失了类型系统的可靠性
- javaScript没有编译环节,初期发展就设计成弱类型、动态类型语言
- 大规模应用下,这种优势也是劣势
弱类型的问题
- 君子约定有隐患,强制要求有保障
- 强类型的优势
- 错误更早暴露
- 代码更只能,编程更准确
- 重构更牢靠
- 减少不必要的类型判断
Flow静态类型检查方案 (工具)
- 参数-> 类型注解
- 使用-> yarn add flow-bin --dev
- flow编译移除注解-> yarn add flow-remove-types --dev
- yarn flow-remove-types src -d dist
- 使用babel代替flow工具
- yarn add @babel/core @babel/cli @babel/preset-flow --dev
- 项目中引入.babelrc 文件{“presets”: ["babel/preset-flow"]}
- yarn babel src -d dist
- vscode插件:flow-language-support 开箱即用
- flow官网支持的编辑器 https://flow.org/en/docs/editors
- flow 类型推断
- 建议手动添加类型注解
- 原始类型
const a: string = 'aax';
const b: number = Infinity;
const c: boolean = false;
const d: null = null;
const e: void = undefined;
const f: symbol = Symbol();
- 数组类型
const arr1: Array<number> = [1,2,3]; const arr2: number[] = [1,2,3];
// 元组 数组长度固定
const arr3: [string, number] = ['hello', 123]
- 对象类型
const obj1: {foo: String, bar: number} = {foo: 'string', bar: 100} const obj2: {foo?: String, bar: number} = { bar: 100 } const obj3: { [string]: string } = {}
obj3.key1 = 'value1'
obj3.key2 = 100
- 函数类型
function foo(callback: (string, number) => void) {
callback(string, 100)
}
- 字面量类型
const type: 'success' | 'warning' | 'danger' = 'success' type StringOrNumber = string | number const b: StringOrNumber = 'string' // 100 const gender: ?number = null // undefined const gender2: number | null | void = null
- mixed与any类型
- 都是指定了任意类型,但是any是弱类型(主要是兼容老代码用的,实际项目中不建议使用),mixed是强类型。执行阶段会非法校验
- 函数类型
类型手册:https://www.saltycrane.com/cheat-sheets/flow-type/latest/
运行环境API 对象
新手入门typeScript的更多相关文章
- 新手入门指导:Vue 2.0 的建议学习顺序
起步 1. 扎实的 JavaScript / HTML / CSS 基本功.这是前置条件. 2. 通读官方教程 (guide) 的基础篇.不要用任何构建工具,就只用最简单的 <script> ...
- Flume NG Getting Started(Flume NG 新手入门指南)
Flume NG Getting Started(Flume NG 新手入门指南)翻译 新手入门 Flume NG是什么? 有什么改变? 获得Flume NG 从源码构建 配置 flume-ng全局选 ...
- 原创:从零开始,微信小程序新手入门宝典《一》
为了方便大家了解并入门微信小程序,我将一些可能会需要的知识,列在这里,让大家方便的从零开始学习:一:微信小程序的特点张小龙:张小龙全面阐述小程序,推荐通读此文: 小程序是一种不需要下载.安装即可使用的 ...
- 【原创】新手入门一篇就够:从零开发移动端IM
一.前言 IM发展至今,已是非常重要的互联网应用形态之一,尤其移动互联网时代,它正以无与论比的优势降低了沟通成本和沟通代价,对各种应用形态产生了深远影响. 做为IM开发者或即将成为IM开发者的技术人员 ...
- 课程上线 -“新手入门 : Windows Phone 8.1 开发”
经过近1个月的准备和录制,“新手入门 : Windows Phone 8.1 开发”系列课程已经在Microsoft 虚拟学院上线,链接地址为:http://www.microsoftvirtuala ...
- WordPress建站 新手入门
WordPress建站 新手入门教程系列 1. WordPress入门 之 什么是WordPress? 2. WordPress入门 之 搭建WordPress站点需要什么条件? 3. WordPre ...
- 安卓自动化测试(2)Robotium环境搭建与新手入门教程
Robotium环境搭建与新手入门教程 准备工具:Robotium资料下载 知识准备: java基础知识,如基本的数据结构.语法结构.类.继承等 对Android系统较为熟悉,了解四大组件,会编写简单 ...
- mongodb新手入门,mongodb命令学习
下面来总结一下mongodb新手入门的常用命令吧.要是您是mongodb新手,可以看下. 1,show dbs 查询mongodb里面的数据库列表 如果想查看当前连接在哪个数据库下面,可以直接输入db ...
- iOS简易柱状图(带动画)--新手入门篇
叨逼叨 好久没更新博客了,才几个月,发生了好多事情,处理了好多事情.不变的是写代码依然在继续. 做点啥子 看看objective-c的书,学着写了个柱状图,只是练习的demo而已,iOS上的图表控件已 ...
随机推荐
- ES5中改变this指向的三种方法
ES5中提供了三种改变函数中this指针指向的方法,分别如下 1.call() var obj = {username:"孙悟空"}; //没有任何修饰的调用函数,函数中的this ...
- express系列(1)概述
在 Node.js 出现之前,前后端的开发必须使用不同的语言进行.为此你需要学习多种的语言和框架.有了 Node.js 之后,你就可以使用一门语言在前后端开发中自由切换,这是最吸引人的地方. 什么是 ...
- ListView的item不能点击(焦点冲突问题)
一般这种问题就是item里面有checkbox或button之类抢占焦点的控件,解决方案有2种: 第一种:就是在checkbox或button添加android:focusable="fal ...
- SpringMVC中@RestController和@Controller的区别
在使用SpringMVC时,对于Controller中的注解@RestController和@Controller需要我们区分清楚 @RestController注解相当于@ResponseBody和 ...
- Druid数据库连接池工具类
package cn.itcast.utils;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSo ...
- 联盛德 HLK-W806 (七): 兼容开发板 LuatOS Air103
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
- Innodb Cluster集群部署配置
目录 一.简介 二.环境声明 三.部署 安装(均操作) 配置(均操作) 开启group_replication(均操作) 启动group_replication 创建集群(在mysql-1执行) 创建 ...
- Linux Ubuntu18.04 安装配置 clash
我最近一段时间在搭建用于构建 Docker 镜像的开发测试环境,这个环境是一台运行于 Windows 笔记本上的虚拟机,其操作系统为 Ubuntu 18.04 .构建场景中经常要去 Github 获取 ...
- [BUUCTF]PWN——[BJDCTF 2nd]ydsneedgirlfriend2
[BJDCTF 2nd]ydsneedgirlfriend2 附件 步骤: 例行检查,64位程序,开启了canary和nx 试运行一下程序,看看大概的情况,经典的堆块的布局 64位ida载入,习惯性的 ...
- 显示大纲数字(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 话说摘要任务,给人的感觉,就像Word里的大纲级别,可我也知道,好多同学不习惯用大纲级别,而是偏爱用编号级别,最常见的也就 ...