Typesctipt基础(一)

简介: Typesctipt基础(一)

Typescript 概述

Typescript 是 Javascript 的超集,即在 Javascript 的基础上扩展了一些功能,下面是两种的关系:

网络异常,图片无法展示
|

由于 Typescript 会被编译成 Javascript,因此 Typescript 在任何一种 Javascript 运行环境下都支持。

相较于 Flow,Typescript 作为一门编程语言,功能更为强大,生态也更健全、更完善。目前来说,Typescript 可以说是前端领域中的第二语言。

Typescript 缺点

  • 语言本身多了很多概念,造成学习成本大,但是 ts 属于渐进式,即可以当作 js 去使用,很多概念都可以不用知道也可以上手。可以完全按照 Javascript 标准语法编写代码。
  • 项目初期,Typescript 会增加一些成本。比如编写很多的类型声明

Typescript 快速上手

yarn init --yes
yarn add typescript --dev   // 安装typescript在项目本地
yarn tsc ***.ts  // 执行完该命令之后会在ts文件同级生成一个编译之后的同名js文件,tsc-typescript compile
复制代码

Typescript 配置文件

tsc 命令不仅仅用来编译指定的 ts 文件,还可以编译整个项目/工程,在编译工程之前,一般要创建 ts 的配置文件。

yarn tsc --init   // 自动生成ts配置文件——tsconfig.json
yarn tsc // 编译工程
复制代码
属性 作用 默认值
target 指定 ts 编译成 js 所用的 es 标准 es5,会把所有新特性转换成 es5 标准的代码,将其改为 es2015 就不会去转换 es2015 的新特性了
module 输出的代码采用的模块化方式 commonjs
outDir 编译结果输出的文件夹 './',可以将其设置为"dist"
rootDir 配置源代码,即 ts 所在的文件夹 一般设置为 src
sourceMap 开启 源代码映射 一般设置为 true
strict 是否开启严格模式

Typescript 原始类型与标准库声明

标准库就是内置对象所对应的声明文件,在代码中使用内置对象,就必须要引用对应的标准库,否则 TS 找不到对应的类型,从而报错。

const a: string = "hh";
const b: number = 100;
const c: boolean = true;
const d: string = null; // 严格模式下会报错
// 相当于 Flow,string、number、boolean 这三种类型在严格模式下是可以允许默认为空(可以赋值为 null 或 undefined)
const e: void = undefined; // 一般用在函数没有返回值,标记返回值类型;void类型只能存放null或undefined;严格模式下只能是undefined
const f: null = null;
const g: undefined = undefined;
const h: symbol = Symbol();
复制代码

其中,由于 symbol 类型是属于 ES2015 的新特性,如果 ts 配置中所配置的所用 es 标准为 es5,即 target="es5",则会报如下图中的错:

网络异常,图片无法展示
|

  • 解决方法 1——target 由"es5"设置为"es2015": 可以将 target 值改为"es2015"
  • 解决方法 2——lib 设置为['ES2015','DOM']: 如果必须要编译到 ES5,可以使用 lib 选项指定所引用的标准库。这样对于 symbol 的使用就不会报错了,但是这时发现 console 却报错了:

网络异常,图片无法展示
|
这是因为 console 对象在浏览器环境中是 dom 对象所提供的,而如果在 lib 选项中只设置了 es2015 的话,那么其他的标准库就都被覆盖掉了,(注意在 Typescript 中 Bom 和 Dom 都被归结为一个标准库文件了,即 Dom),可以设置 lib 为['ES2015','DOM']。

Typescript 中文错误消息

Typescript 本身支持多语言的错误消息,默认跟随操作系统的语言设置。 可以在执行编译命令的时候可以添加语言设置参数:

yarn tsc --locale zh-CN
复制代码

而对于 VScode 里的错误消息,可以在配置选项里设置:

网络异常,图片无法展示
|

Typescript 作用域问题

在不同文件中存在相同变量名称,这种情况肯定存在,如果变量定义在全局作用域里,typescript 会报“重复定义变量的”的错误:

网络异常,图片无法展示
|
可以用一个立即执行函数创建一个单独作用域:

(function(){
    const a = 9
})()
复制代码

或者在文件中使用 export 导出,这样这个文件就会作为一个模块,模块是有自己的模块作用域的:

const a = 9
export {}   // 这里是export的语法,并不是导出一个空对象的意思
复制代码

相关链接

TypeScript 入门教程



相关文章
|
8月前
基础练习-2
基础练习-2
61 0
|
8月前
|
人工智能
基础练习-3
基础练习-3
80 0
|
1月前
数字电子技术基础4
数字电子技术基础
16 0
|
1月前
|
传感器 编解码 C++
C++视频基础
C++视频基础
|
8月前
|
传感器
模拟电子基础
一、什么是模拟电子基础 模拟电子基础是指电子学中涉及模拟信号处理的基本理论和技术。模拟电子基础包括模拟信号的产生、传输、处理和检测等方面的知识,涉及模拟电路的设计、分析和测试等内容。模拟电子基础是电子学的重要组成部分,也是电子工程师必须掌握的基本知识之一。 二、模拟电子基础的特点 模拟电子基础具有以下特点: 1. 模拟信号处理:模拟电子基础主要涉及模拟信号的处理,即对连续变化的信号进行采样、放大、滤波、混频、调制等处理。与数字电子基础不同,模拟电子基础处理的信号是连续的,而不是离散的。 2. 连续性:模拟电子基础处理的信号是连续变化的,与数字电子基础处理的离散信号不同。这意味着在模拟电子基础中
39 0
|
11月前
|
C#
C#基础总结(2)
C#基础总结(2)
45 0
|
SQL 网络协议 网络安全
|
存储 编译器 C++
C/C++ - 基础篇(上)
C/C++ - 基础篇(上)
125 0
|
图形学 Windows
GDI+基础
GDI+的核心是 Graphics 对象,Graphics 类定义了绘制和填充图形对象的方法和属性。Graphics 类的属性(字段)很多,具体可参见 MSDN。Graphics 类的方法分为三类:绘制、填充及其他。
697 0
GDI+基础