写篇文章让自己会写Ts——(1)Ts使用入门

1,261 阅读5分钟

ts的名字相信大家或多或少都有耳闻,ts即type script 类型规范的脚本语言。通过ts我们可以解决因为js动态语言引起的问题,多人开发中尤为重要。

笔者撰写文章时最新版本为: ts 3.1

一、Ts简单介绍

ts是js的超集,拓展了js内容,就像sass和css的关系,我们通过ts提升编写代码的体验和效率,但ts需要被编译成js才能执行。本质上我们学习使用ts就像驯服容易乱咬人的js小狗狗

ts的编译器可以是npm上的插件typescript,或则直接是webpack配置的对应loader,只是一种将写好的ts转换成js的手段。

官方指出,有两种主要的方式来获取TypeScript工具:通过npm和Visual Studio的TypeScript插件

二、Ts环境

这里讲解基于vscode和npm插件typescript

安装ts编译器(环境)

通过终端指令全局安装插件typescript

cnpm i -g typescript

编译ts文件

我们创建ts文件(hw.ts)写入打印语句:

console.log('hi!')

终端执行编译指令:

tsc .\hw.ts

默认编译成es5语法(let=》var),以此向下兼容,通过配置可以按需兼容。

可以看到编译后产生的js文件:

image.png

编译配置文件

其实ts的编译是可控的,可以去设置严格程度和其他一些编译选择。本篇文章提出这个知识但不会深入讲解,而是留到下篇文章进行探讨。通过ts配置新手可以很好的学习ts的使用,同时熟练的程序员可以根据需要定制编译效果。

初始化配置文件tsconfig.json

tsc --init

image.png

三、使用Ts

1.基本语法(type)

说完环境的准备我们开始进行语法的讲解。

设置变量类型

通过在声明变量时在变量名添加冒号+数据类型就可以静态固定该变量的类型。

let a: number;

声明完后我们只能向变量a赋值对应的值,如果不匹配类型就会出现红线提示,同时编译也会报错。

默认配置情况下即使存在编译报错,也能编译产生js文件。

如果我们不使用上面ts语法,ts也会在变量第一次赋值过后隐式的固定变量的类型。

let a;//注意这里等效 let a: any; 后面将讲解any。
a = "123";
let b = "321";// 等效于 let b: string = "321";

设置函数签名

js的函数将js的动态性发挥得很好,通过ts我们限制函数的语法,使之接近静态语言的语法。

我们可以选择在声明函数固定传参的类型,同时ts会拒绝不定参数的写法:

function fn(num:number,str:string){
    console.log('12')
};
fn(123,"321");//调用函数时必须要严格满足参数类型和参数数量。

固定返回值类型:

function fn() :string{
    return 'ok'
};

这里总体和静态语言是类似的,要求一一对应,否则提示报错,学习过c语言或java会很容易上手。

2.基本类型

基本类型总展示

  • 总结上述的语法:
let 变量: 类型;
let 变量: 类型 = 值;
function fn(参数: 类型, 参数: 类型): 类型{
    ......
}
  • 手动搬运类型表格: ( 常用,特殊使用案例和部分类型未展示 )
数据类型关键字描述
任意类型any声明为 any 的变量可以赋予任意类型的值,声明变量但不赋值时默认的类型,不建议使用。
字面量类型任意值声明后变量只能赋值该任意值
数字类型number双精度 64 位浮点值。它可以用来表示整数和分数。
字符串类型string一个字符系列,使用单引号(')或双引号(")来表示字符串类型。反引号(`)来定义多行文本内嵌表达式
布尔类型boolean表示逻辑值:truefalse
数组类型数据类型[]声明变量为数组。
voidvoid用于标识方法返回值的类型,表示该方法没有返回值。
nullnull表示对象值缺失。
undefinedundefined用于初始化变量为一个未定义的值

下面讲解的围绕一些特殊语法。

或 类型语法

通过 | 或运算符,我们可以给一个变量定义为两及以上个类型,即可以存在两种类型情况。

let b: '2' | number = 324 ;
let b: (false | number | string)[] = [ 324 , false , 'str' ] ;

这里变量b的类型,我们称之为联合类型(可以理解为any是最大的联合类型,其实any是关闭Ts类型检测)。

与 类型语法

通过 & 与运算符,我们将多个类型同时限制给变量。这里我们并不是去做类似numberstring类型同时满足的矛盾情况,而是配合动态类型的特点,进行动态编程:

let c: 类型常量1 & 类型常量2

这里通常类型常量1包含2,2是动态变化,用于缩小明确c变量的类型范围。

自定义类型

通过 type 关键字,我们可以自定义一些类型常量,利于动态编程。例如:

type Second = number | string ; 
const numstr : Second ;
numstr = 12 ;
numstr = '13' ;

这里Second既是number类型又是string类型。