TypeJScript基础

TypeJScript基础安装typescript包 npm install -g typescript 或者 yarn global add typescript 使用ts工具编辑成ES5 新建一个.ts的文件 = 在终端

安装typescript包

npm install -g typescript

或者

yarn global add typescript

建议进入淘宝镜像下载,yarn 试了好几次 都不好使
 //设置镜像为taobao。
npm config set registry https://registry.npm.taobao.org
//设置镜像为npm官方
npm config set registry https://registry.npmjs.org
//查看配置
npm config get registry 

使用ts工具编辑成ES5

新建一个.ts的文件 =>

在终端内输入命令 tsc 文件名 =>

会得到一个 文件名.js的文件

但这样每次编辑完ts文件后都需要重新

也可以在终端中输入 tsc -watch 任务名 (一直监视文件内容的变化)

可以自动更新

ts中的数据类型

布尔型

let flag: boolean = true
// flag = "sss" 报错
flag = false //正确

数字类型

let num: number = 123
console.log(num)
num = 12.3
console.log(num)

字符串类型

let str: string = "this is string"
str = "Nihao"
console.log(str)

数组类型

//第一种 
let arr: number[] = [1, 2, 3, 4, 5]
// let arr:number[]=[1,2,3,4,false] 错误写法
console.log(arr)

let atrr: string[] = ['this', 'is', 'a', 'arr']
console.log(atrr)
//第二种 
let arrs: Array<number> = [1, 2, 5, 4, 7]
console.log(arrs)
let arrd: Array<string> = ["this", "is", "a", "str", "array"]
console.log(arrd)

//第三种 利用any
let arr3: any[] = [1, 2, "你好"]
console.log(arr3)

元组类型

属于数组的一种,可以定义数组中每一个值的类型

let arrR: [number, string, boolean] = [12, "niha", true]

枚举类型

用来判断一些有特殊含义的文字

比如:用0代表已支付,1代表未支付 会弄不清具体0,1的语义(含义)

语法 : enum 枚举名 {标识符 = 整形常数, 标识符 = 整形常数 ……}

enum Flages { success = 1, error = -1 }
let f: Flages = Flages.success
console.log(f)
console.log(Flages.error)

enum Color { red, blue, yellow }
let c: Color = Color.red
console.log(c)

enum Color1 { red, blue = 5, yellow }
let d: Color1 = Color1.yellow
console.log(Color1.red)//0
console.log(d)//6

任意类型 any

let any: any = 123
any = "nihao"
console.log(any)

任意类型的使用场景

在获取元素节点时,元素节点是个对象,对象就不能在进行修改样式等操作 就需要定义个任意类型

// let div = document.querySelector('#div')//会报错
let div: any = document.querySelector('#div')
div.style.color = 'red'

null 和 undefined 其它数据类型

undefined

let count: number;
// console.log(count) //定义未赋值就会报错

let count1: undefined
console.log(count1)
// 用| 代表了或 如果赋值就传入否则是undefined
let count2: number | undefined
console.log(count2)
count2 = 123
console.log(count2)

null

let nu1: null
// console.log(nu1)// 报错
nu1 = null
console.log(nu1)

一个元素可能是number 可能是 null 可能是undefined

let count3: number | null | undefined

console.log(count3)
count3 = 5
console.log(count3)

void类型

typescript中的void表示没有任何类型,一般用于定义方法的时候没有返回值

大多数是用在表示方法没有返回任何类型

function run2(): void {
  console.log("run")
}
run2()

//如果有返回值 返回什么指定什么类型
// function run(): number {
// return 1
// }
// run()

never类型

是其他类型 (包括null和undefined) 的子类型,代表从不会出现的值

声明never的变量只能被never类型所赋值

let abc: never
abc = (() => { throw console.error("有个错误") })()

定义函数

函数的定义方式

声明函数
function run(): string {
  return "跑"
}
console.log(run())
匿名函数
let fan1 = function (): number {
  return 123
}
console.log(fan1())

函数的传参

声明函数

function getinfo(name: string, age: number): string {
  return `${name}~~~${age}`
}
console.log(getinfo("丁永康", 22))

匿名函数

let getinfo1 = function (name: string, age: number): string {

  return `${name}~~~${age}`
}
console.log(getinfo("姜小莹", 18))

定义没有返回值的函数

function aab(): void {
  console.log("没有返回值得方法")
}
aab()

定义可选传参的函数

在ts中函数传参 需要在可填可不填的形参与冒号之间加个?号

可选参数必须要配置到最后面,不能放到前面

function getinfo2(name: string, age?: number): string {

  if (age) {
    return `${name}~~~${age}`
  } else {
    return `${name}~~~年龄保密`
  }

}
console.log(getinfo2("丁永康", 22))
console.log(getinfo2("姜小莹",))

定义有默认参数的函数

function getinfo3(name: string, age: number = 20): string {

  if (age) {
    return `${name}~~~${age}`
  } else {
    return `${name}~~~年龄保密`
  }

}
console.log(getinfo3("丁永康"))
console.log(getinfo3("丁永康", 40))

剩余传参(扩展运算符…)

function sum(a: number, ...result: number[]): number {
  return result.reduce(function (sum: number, item: number): number {
    sum += item
    return sum
  }, 1)
}

console.log(sum(1, 2, 3, 4, 5, 6))

函数的重载!!!

在ts中可以定义多个一样名字的函数,来进行对实参类型进行判断并返回对应的结果,不会像es5中一样函数名的函数就会被替换掉

可以在第三个函数中对形参的类型进行判断

function getinfo5(name: string): string
function getinfo5(age: number): string
function getinfo5(str: any): any {
  if (typeof str === "string") {
    return `我叫${str}`
  } else {
    return `我的年龄是${str}`

  }
}
console.log(getinfo5("丁永康"))
console.log(getinfo5(22))

函数重载中可选传参

function getinfo6(name: string): string
function getinfo6(name: string, age?: number): string
function getinfo6(name: any, age?: any): any {
  if (age) {
    return `我叫${name},我的年龄是${age}`
  } else {
    return `我叫${name}`
  }
}
console.log(getinfo6("丁永康"))
console.log(getinfo6("丁永康", 22))

箭头函数和js一样

今天的文章TypeJScript基础分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/20272.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注