typeScript学习01

布尔类型

布尔值是最基础的数据类型,在 TypeScript 中,使用 boolean 定义布尔值类型:

const bool1: boolean = false 
const bool2: boolean = 'fasle'   //编译器报错,不能将类型“"dsdsd"”分配给类型“boolean”。
const bool3: boolean = new Boolean(1)  // 不能将类型“Boolean”分配给类型“boolean”。 “boolean”是基元,但“Boolean”是包装器对象。如可能首选使用“boolean”。
const bool4: boolean = Boolean(0)
console.log(bool4)   // false
const bool5: boolean = Boolean(1)
console.log(bool5)   // false

数值类型

使用 number 定义数值类型:

let num: number = 1212
num = 0b101110  // 二进制
num = 0o172     // 八进制
num = 0x7b      // 十六进制    

字符串类型

使用 string 定义字符串类型:

let str1: string = 'jsbin'
let str2: string = `使用es6的字符串模板也可以${num}`

数组类型

定义数组有两种写法

let arr1: number[] = [1,2,3,4]         // 写法1
let arr2: Array<number> = [1,2]        // 写法2
let arr3: (string | number)[] = [1]    // 联合类型,既可以是数字类型,也可以有字符串类型
let arr4: Array<number | string> = [1, '2']

元组类型

长度固定,对应数据的数据类型要一致

const tuple1: [string, boolean, number] = ['jsbin', true, 0]
const tuple2: [string, number] = ['jsbin', '12121']  // 不能将类型“string”分配给类型“number”。
const tuple3: [string, number] = ['jsbin', 121, 1212] // 不能将类型“[string, number, number]”分配给类型“[string, number]”。属性“length”的类型不兼容。

枚举类型

enum Rolse {
  SUPER_ADMIN = 905,
  ADMIN,
  USER
}

// 编译成js之后
var Rolse;
  (function (Rolse) {
    Rolse[Rolse["SUPER_ADMINS"] = 905] = "SUPER_ADMINS";
    Rolse[Rolse["ADMINS"] = 906] = "ADMINS";
    Rolse[Rolse["USERS"] = 907] = "USERS";
  })(Rolse || (Rolse = {}));
 
 console.log(Rolse.USER)  // 907

any

// any类型(任何类型)
let any: any
any = 0
any = false
any = '1212'

空值void

avaScript 没有空值(Void)的概念,在 TypeScript 中,可以用 void 表示没有任何返回值的函数:

function alertName(): void {
    console.log(JsBin');
}

声明一个 void 类型的变量没有什么用,因为你只能将它赋值为 undefined 和 null:

const unusable: void = undefined;

null和undefined

在 TypeScript 中,可以使用 null 和 undefined 来定义这两个原始数据类型:
与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 number 类型的变量:

let u: undefined = undefined
let n: null = null

// 这样不会报错
let num: number = undefined;

// 这样也不会报错
let u: undefined;
let num: number = u;

// Type 'void' is not assignable to type 'number'.
let u: void;
let num: number = u;

never

// never  (别得类型都不能)
const errorFn = (message: string) : never => {
  throw new Error('dsd')
}

object

使用object定义对象类型

// object
let obj: object = {
  name: 'jsbin'
}

类型断言

类型断言(Type Assertion)可以用来手动指定一个值的类型。两种写法1.<类型>值; 2.值 as 类型

// 类型断言        
function getLength(something: string | number): number {
  if ((<string>something).length) {
      return ((something as string).length);
  } else {
      return something.toString().length;
  }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、什么是 TypeScript? 百度解释:TypeScript是一种由微软开发的自由和开源的编程语言。它是Ja...
    wave浪儿阅读 2,303评论 1 20
  • 简介 TypeScript 是 JavaScript 的一个超集,主要提供了 类型系统 和对 ES6 的支持,由 ...
    MrWelson阅读 16,138评论 3 21
  • 关于TypeScript TypeScript是JavaScript的超集,主要提供类型系统和对ES6的支持,由M...
    kim_jin阅读 803评论 0 1
  • 前言 现在TypeScript越来越火,咱也赶一下潮流,开始学习一下TypeScript,在学习的同时做笔记记录,...
    郝晨光阅读 1,510评论 0 7
  • typescript现在已经慢慢变成前端工程师必学必会的技能了,它在开发大型应用的时候可以让产品更加可控,本篇就试...
    大喵爱读书阅读 4,371评论 0 5

友情链接更多精彩内容