前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TypeScript 之类型判断

TypeScript 之类型判断

作者头像
叙帝利
发布2018-07-31 17:38:52
3.3K0
发布2018-07-31 17:38:52
举报
文章被收录于专栏:前端新视界前端新视界

在使用 Angular 做项目的时候,对 TypeScript 的类型判断不太熟练,为了方便查找,特意对 TypeScript 的类型判断做了简单梳理。

基础类型

代码语言:javascript
复制
// 布尔值
let isDone: boolean = false;

// 数字
let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;

// 字符串
let name: string = "bob";
name = "smith";

// 数组
let list: number[] = [1, 2, 3];
// 数组泛型
let list: Array<number> = [1, 2, 3];

//元组 Tuple
let x: [string, number];
x = ['hello', 10]; // OK
x = [10, 'hello']; // Error

// 枚举
enum Color {Red, Green, Blue}
let c: Color = Color.Green;

// Any
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean

// Void
function warnUser(): void {
    alert("This is my warning message");
}

// Null 和 Undefined
let u: undefined = undefined;
let n: null = null;

// Never
function error(message: string): never {
    throw new Error(message);
}

function fail() {
    return error("Something failed");
}

function infiniteLoop(): never {
    while (true) {
    }
}

类型断言

类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。 它没有运行时的影响,只是在编译阶段起作用。

代码语言:javascript
复制
let someValue: any = "this is a string";
// “尖括号”语法
let strLength: number = (<string>someValue).length;
// as语法
let strLength: number = (someValue as string).length;

接口

TypeScript 的核心原则之一是对值所具有的结构进行类型检查。 它有时被称做“鸭式辨型法”或“结构性子类型化”。 在 TypeScript 里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。

代码语言:javascript
复制
interface LabelledValue {
  label: string;
}

// 可选属性
interface SquareConfig {
  color?: string;
  width?: number;
}

// 只读属性
interface Point {
    readonly x: number;
    readonly y: number;
}

// 函数类型
interface SearchFunc {
  (source: string, subString: string): boolean;
}

// 可索引的类型
interface StringArray {
  [index: number]: string;
}

// 类类型
interface ClockInterface {
    currentTime: Date;
}

泛型

代码语言:javascript
复制
function identity<T>(arg: T): T {
    return arg;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-07-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础类型
  • 类型断言
  • 接口
  • 泛型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档