TypeScript(八):类型别名和类型断言

  • 类型别名,使用 type 关键字
function sum(x: number, y: number): number {
  return x + y
}
const sum2: (x: number, y: number) => number = sum;

上面 sum2 函数类型定义很麻烦,可以使用类型别名:

type PlusType = (x: number, y: number) => number;

function sum(x: number, y: number): number {
  return x + y
}

const sum2: PlusType  = sum;

类型别名,最常用的是使用联合类型

type NameResolver = () => string;
type NameOrResolver = string | NameResolver; // 联合类型

// 如果参数是字符串,则直接返回,如果是方法,则执行方法
function getName(n: NameOrResolver): string {
  if (typeof n === 'string') {
    return n
  } else {
    return n()
  }
}
  • 类型断言
    类型断言,大概意思就是说,本人比编译器更加清楚类型;如果断言成不存在的类型,是会报错的。
function getLength(input: string | number) : number {
  const str = input as String // 类型断言,本人比编译器更加清楚类型
  if (str.length) {
    return str.length
  } else {
    const number = input as Number
    return number.toString().length
  }
}

另外一种方式写法:

function getLength(input: string | number) : number {
  if((<string>input).length) {
    return (<string>input).length
  } else {
    return input.toString().length
  }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容