一.开发环境的搭建
1.下载与安装-Node
下载Node.js
下载连接 点击下载连接,下载对应版本的文件即可 下载完成后进行安装 一路next,注意选择安装路径,最后finish就ok了 安装结束后,win+R
输入cmd
在命令行输入node -v
,如果有对应的版本信息出现,即代表安装完成
2.使用npm全局安装TypeScript
win+R
输入cmd
命令行窗口中输入npm i -g typescript
,安装TypeScript解析器 等待读条安装即可安装完成后输入tsc -v
或tsc
输出版本号或使用信息就代表安装完成了
3.Hello World!
新建一个名为hello.ts
的文件,打开编辑 写下第一行代码,并保存
console . log ( "Hello wrold !" ) ;
编译验证 这个时候的ts文件还不能被浏览器识别,需要TypeScript编译才能执行 在当前文件夹路径框输入cmd
,命令行再输入tsc hello.ts
即可完成对文件的编译 这时候可以看到对应文件夹下生成了一个hello.js
文件
二.TS的类型
1.TS类型的特性
可以通过let [变量名] : [类型]
指定一个变量的具体类型 并且可以在声明的同时就进行赋值let num : number = 123;
直接赋值时写法还可简化let num = 123;
TS会自动判断变量的类型
let num: number ;
num = 123 ;
let str : string = "iFinder" ;
let bool = false ;
bool = true ;
相比JS来说TS可以更方便的定义入参的类型以返回值的类型
function [ 方法名] ( [ 变量1 ] : [ 类型] , [ 变量2 ] : [ 类型] , ... ) : [ 返回值类型] {
...
}
function sum ( a, b) {
return a + b;
}
console . log ( sum ( num, num) ) ;
console . log ( sum ( num, "12" ) ) ;
function sumTs ( a : number , b : number ) {
return a + b;
}
console . log ( sumTs ( 123 , 123 ) ) ;
function appendStr ( s1 : string , s2 : string ) : string {
return s1 + s2;
}
补充 :如何看到编写的函数的输出结果 以VSCode为例,新建一个html文件,输入!
生成默认模板 然后在<body> </body>
中添加TS文件编译后的JS文件的引用 在浏览器中打开后,右键选择检查,找到console
即可看到输出的结果
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< meta http-equiv = " X-UA-Compatible" content = " IE=edge" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> Document</ title>
</ head>
< body>
< script src = " 02.ts_type.js" > </ script>
< script src = " 01.hello.js" > </ script>
</ body>
</ html>
建议打开VSCode的自动保存功能,设置焦点改变立即保存,以免发生没保存却在一直编译,输出结果不变的尴尬情况
2. TS的数据类型
类型 示例 描述 number
1, -33 , 2.2 任意的数字 string
“iFinder”, “Nancy” 任意字符串 boolean
true, false 布尔值 any
* 任意类型 unknown
* 类型安全的any void
空值(undefined) 没有值或者undefined never
没有值 不能是任何值 object
{name:“iFInder”} 任意的JS对象 array
[1, 2, 3, 4, 5] 任意的JS数组 tuple
[4 ,5] 元素,TS新增类型,固定长度数组 enum
enum{A1, B1, C1} 枚举类型, TS新增类型 字面量
其本身 限制变量的值就是该字面量的值
2.1 字面量与联合类型
可以用字面量来当作一种类型,使用后变量只能等于字面量 可以用|
符号来定义多种类型,这样的类型叫做联合类型
let a : 10 ;
a = 10 ;
let student : "iFinder" | "Nancy" | "Bob" ;
let age : number | string ;
age = 24 ;
age = "35" ;
2.2 any与unknown类型
变量定义为any
之后类型不会被限制,并且可以赋值给其它的变量 但是这样使用是很不安全的,开发中不建议使用 unknown
也不限定值的类型,但是它不能赋值给其它的变量 所以unknown
可以理解为类型安全的any
类型使用unknown
后可以结合typeof
或类型断言
来进行类型的判断
let every1 : any ;
every1 = 123 ;
every1 = "iFinder" ;
every1 = true ;
let test;
let every2: unknown ;
every2 = "iFinder" ;
let str: string ;
str = every1;
if ( typeof every2 === "string" ) {
str = every2;
}
str = every2 as string ;
str = < string > every2;
2.3 void 与 never
void
一般指定函数不返回或返回值为空never
让该函数连空都不会返回,一般用在异常处理
function fun1 ( num) {
if ( num > 0 ) {
return true ;
} else {
return "error" ;
}
}
function fun2 ( ) : void {
}
function error1 ( errorCode) : never {
throw new Error ( "error code" + errorCode) ;
}
2.4 object类型
开发时通过{属性名1: 类型1, 属性名2: 类型2, ...}
表示一个对象,与其携带的属性 在属性名后加上?
可以表示可选属性 使用[属性名: string] : 类型
的方式,可以指定任意多个对象的属性 可以通过(形参1: 类型, 形参2: 类型, ...)=>类型
的语法来限制返回值的类型
let oc: object;
oc = { } ;
oc = function ( ) { } ;
let oc2: { name: string } ;
oc2 = { name: "iFinder" } ;
let human: { name: string , age? : number } ;
human = { name: "iFinder" , age: 24 } ;
human = { name: "Nancy" } ;
let oc3: { name: string , [ propName: string ] : unknown } ;
oc3 = { name: "Cat" , weight: "13kg" , age: 5 } ;
let fun : ( num1: number , num2: number ) => number ;
fun = function ( a, b) : number {
return a + b;
}
2.5 array与tuple
let strArr: string [ ] ;
let strArr1: Array < string > ;
strArr1 = [ 'a' , 'b' , 'c' ] ;
let numArr: number [ ] ;
let numStr1: Array < number > ;
numArr = [ 1 , 2 , 3 ] ;
let strTup: [ string , number ] ;
strTup = [ 'one' , 123 ] ;
2.6 enum枚举类型
enum Gender {
Male,
Female
}
let humanBean : { name: string , gender: Gender} ;
humanBean = {
name: 'iFinder' ,
gender: Gender. Male
}
console . log ( humanBean. gender === Gender. Male) ;
2.7 类的别名与合并对象
let mix: { name: string } & { color: number } ;
mix = {
name: "mix12" ,
color: 126
}
type myType = string | number | boolean ;
let test1: myType;
let test2: myType;
笔记说明
笔记markdown文件+项目源码 B站对应视频