第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

【九月打卡】第46天 TypeScript(2)

標(biāo)簽:
Typescript

类型注解和类型推断

TS开发准则:只要是变量或者对象属性,都应该有一个明确的类型

// bad
const user: any = 'tz'
user.toUpperCase()

// good
const user: string = 'tz'
user.toUpperCase()

类型注解
人工的告诉TS,变量或者对象属性的类型

// 显示地声明user的类型为string
const user: string = 'tz'

类型推断
TS可以自动推断出变量或者对象属性的类型

// TS自动推断出age类型为18
const age = 18;

注意点
1、如果可以自动推断,就没有必要写类型注解
2、有些无法推断出来的或者推断的不正确,就需要写类型注解

// 无法自动推断`first`和`second`的类型,需要进行类型注解
function sum(first: string, second: string) {
	return first + second
}

// userInfo的name属性自动推断是string类型;如果推断的不正确,需要手动注解
const userInfo: {
	name: 'tz',
	age: number
} = {
	name: 'tz',
	age: 18
}

3、对象解构的类型的写法

const function fn({a, b} : { a: string, b: string}) {
	return a + b
}

// 或者使用type
type User = { a: string, b: string}
const function fn({a, b} : User) {
	return a + b
}

// 或者使用interface
interface User {
	a: string;
	b: string
}
const function fn({a, b} : User) {
	return a + b
}

4、变量类型以定义变量时为准

let user = 'tz'
user = 123 // 报错:因为user定义时是string类型;不能赋值其他类型的值

类型收窄

  • 类型收窄就相当于到if…else 或者switch…case等流程控制语句中加上条件,从而达到收窄的效果。

  • 常用的类型收窄有 typeof收窄、真值收窄、相等收窄、in、instanceof、

typeof收窄

function upper(val: string | number) {
  if(typeof val === 'string') {
    return val.toUpperCase();
  }
  return val;
}

真值收窄

function upper(val?: string) {
  if(val){
    return val.toUpperCase()
  }
}

相等收窄
x和y相等,会自动推断出x和y的类型都是string,可以执行toUpperCase方法

function upper(x: string | number, y: string | boolean) {
  if(x === y) {
    return x.toUpperCase()
  }
}

in 收窄

interface Fish {
  swim: () => {};
}

interface Bird {
  fly: () => {};
}

function action(animal: Fish | Bird) {
  if ('swim' in animal) {
    animal.swim();
  } else {
    animal.fly();
  }
}

instanceof 收窄

function getDate(params: Date | string) {
  if(params instanceof Date) {
    return params.getTime()
  }
  return params.toUpperCase()
}

使用类型陈述实现类型收窄

interface Fish {
  swim: () => {};
}

interface Bird {
  fly: () => {};
}

// animal is Fish属于类型陈述
function isFish(animal: Fish | Bird): animal is Fish {
  if ((animal as Fish).swim !== undefined) {
    return true;
  }
  return false;
}

function action(animal: Fish | Bird) {
  if (isFish(animal)) {
    animal.swim();
  } else {
    animal.fly();
  }
}
點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消