Typescript入门之基本类型(二)

1,134 阅读3分钟

作为一个小职员,工作多,没提成,人家休假我加班。房贷没还清,保险自己买。不过好在我不用交停车费,因为我根本买不起车。2020年小编决定好好的学习Typescript,提升个人能力,努力赚小钱钱,争取买到一辆自行车(呸,要啥自行车!!!!)。这是小编写的第二篇Typescript学习的文章。

Typescript入门之基本类型(一)

Typescript入门之基本类型(二)

Typescript入门之数组与元组

Typescript入门之接口

基础类型(一) 中我们说了js中的基本类型在ts中对应的类型,除了那其中类型外,在ts中还有基本特殊的类型。

任意值

任意值any表示不受类型系统的限制,可以被赋予任何类型的值

// 声明字符类型
let str: string = 'string'
// 赋值其他类型的值 报错  Type '123' is not assignable to type 'string'.
str = 123

// 给any类型的变量赋值字符
let anyValue: any = '字符'
// 再修改值为数字也是可以的
anyValue = 123

任意值不仅可以被任意赋值,也可以被调用任何属性或者方法

let arr: any = 12345
// 实际数值没有split方法,调用会出错,但是any类型不做类型检查,所以调用时没有提示语法错误
let spllit: any  = arr.split(',')

在实际项目中,any一般在不知道值的类型的时候使用。在项目中应避免将typescript使用成anyscript, 使用typescript更多的就是利用它自身类型系统的优势。

unknown

在ts3.0新引入了一个新的类型unknown, unknownany一样,任何类型都可以赋值给unknown

let unknownValue: unknown =  'string'
unknownValue =  123

但与any不同的是,如果没有给unknown明确指定类型,无法对unknown做任何操作

let value: unknown =  'string'
// 报错 Object is of type 'unknown'
const val1: unknown = value.toLocaleLowerCase()
// 正确  在ts中可以通过 as 为变量指定类型
const val2:  string  =  (value as  string).toLocaleLowerCase()
// 也可以使用<string>value的方式自定类型,在React中不支持
const val3:  string =  (<string>value).toLocaleLowerCase()

建议对于未知类型的情况下优先使用unknown

void

对于熟悉java的同学来说,void是特别常用的一个类型,表示没有任何返回值

public static void main(String args []){  
        System.out.println('输出字符串');   
    }

在ts中,void的作用基本和java是一致的,如果一个函数或者方法没有返回值,那么它的返回值就是void

function method():  void  {
   console.log('没有任何返回值')
}

如果给一个变量指定类型为void,那么这个变量的值只能是undefinednull

let void1: void = undefined
let void2: void = null
// 报错 Type '123' is not assignable to type 'void'.
let void3: void =123

never

void代表没有返回值,而never类型表示的是永不存在的值的类型,使用never常用的场景包括

  • 函数抛出异常
  • 函数内部出现死循环
// 抛出异常
 function error(message: string): never{
     throw new Error(message)
}
// 死循环
function map():never  {
    while(true)  {}
}

如果将一个变量指定类型为never,那么这个变量只能赋值never类型的值

 function error(message: string): never{
     throw new Error(message)
}
let never1: never = error('异常信息')

// 报错 Type '1' is not assignable to type 'never'
let never2: never = 1

// 报错 Type 'null' is not assignable to type 'never'
let never3: never = null

// 报错 Type 'undefined' is not assignable to type 'never'.
let never4: never = undefined

// 报错 Type 'any' is not assignable to type 'never'
const anyValue: any = 1
let never5: never = anyValue