TypeScript
使用步骤
- npm i -g typescript---->给电脑安装的
- tsc xxx.ts ---->将ts文件转变为 xxx.js ----> 运行 node xxx.js
优化
-
1- npm i – g ts-node
-
2- ts-node xxx.ts 在node环境下直接执行ts文件 (直接运行ts文件,不需要再转化为js文件了)
运行tsc --watch xxx.ts 监听文件变化,自动转化为js文件
声明变量
// demo.ts
let age: number = 123
let str: string = 'zs'
let un: undefined = undefined
let nu: null = null
let flag: boolean = false
let arr1: string[] = ['zs', 'ls', 'ww']
let arr2: number[] = [1, 2, 3]
let arr3:(string|number)[]//字符串的数组或者数字数组
let arr4:string | number[] //字符串或者 数字数组
//运行 ts-node demo.ts
//数组对象
const xjj :{name:string,age:number}[]=[
{name:'zs',age:18},
{name:'ls',age:20}
]
类型别名
- 可以为任意类型指定别名
//或者 使用类型 别名
type Lady = { name: string, age: number }
class Madam {
name: string
age: number
}
//1--
const xjj :Lady[]=[
{name:'zs',age:18},
{name:'ls',age:20}
]
//2--
const xjj :Madam[]=[
{name:'zs',age:18},
{name:'ls',age:20}
]
函数
//如果一个函数没有返回值。则默认返回类型为void(为空的意思),,在函数的小括号后面指定返回值类型
let nums1:number[]=[1,2,3]
function getSum(nums:number[]):number { //指定返回值类型为number
let sum:number = 0
for(let i:number = 0 ;i<nums.length ; i++){
sum += nums[i]
}
return sum
}
function fn ():never{...}//死循环或者永远执行不到最后
//参数是对象的
function add ({ one , two }:{one:number,two:number}){...}//类型注解写在后面
const total = add({one:1 , two:2})
对象
let person:{ // 对象在使用之前,先对内部的属性进行类型注解
name:string
age:number
sayHi:()=>void //没有参数,没有返回值
sum:(n1:number , n2:number)=>number //两个数字类型的参数 , 返回值是数字类型
}
person={
name:'zs',
age:18 ,
sayHi:function(){
console.log('你好')
},
sum:function(a:number,b:number){ // 可以不传参,但是要传就一定要传符合定义类型的参数
return (a+b) // 一定要有符合定义类型的返回值
}
}
接口 ---- 给对象的类型注解起个别名
- 接口只能为对象指定类型
interface IUser { // 接口命名使用I 开头
name: string,
age: number,
height ?: number,//? 表示可选值
[propname:string]:any,
sayHi: () => void
}
let p1: IUser = { //需要使用IUser接口使,直接加在后面就可以了
name: 'zs',
age: 18,
sayHi: function () {
}
}
let p2: IUser = {
name: 'ls',
age: 11,
sayHi: function () {
}
}
接口的继承
interface IPerson1 {
name: string
age: number
}
interface IPerson2 {
color: string
}
interface IMan extends IPerson1, IPerson2 {
//IMan继承 IPerson1, IPerson2
//若继承前后存在相同的属性,但是类型不同,则会报错
height: number
}
let m: IMan = {
height: 11,
name: 'zs',
age: 12,
color: 'red',
}
元组
let arr: [number, string] = [1, '2']
//就是把数组精确到多少位,每一位是什么数值类型都表明
字面量类型
const age = 18
//const 声明的变量就是字面量类型, 这里age的类型就是18
----> const age:18 = 18
function changeDirection(direction: 'top' | 'left') {
console.log(direction)//只会打印top 或者left
}
changeDirection('top')