TS基础(1)

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')
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值