TypeScript有13中数据类型

布尔值(Boolean)

  • 最基本的数据类型就是简单的 true/ false值,在 JavaScript和 TypeScript里叫做 boolean(其它语言中也一样)。
let isDone: boolean = false;

数字(Number)

  • 和 JavaScript一样, TypeScript里的所有数字都是 浮点数。这些 浮点数的类型是 number。
  • 除了支持 十进制和 十六进制字面量, TypeScript还支持 ECMAScript2015中引入的 二进制和 八进制字面量。

let decLiteral: number = 6; // 十进制
let hexLiteral: number = 0xf00d; // 十六进制
let binaryLiteral: number = 0b1010; // 二进制
let octalLiteral: number = 0o744; // 八进制

字符串(String)

  • 可以使用双引号( ")或单引号( ')表示字符串
let color: string = 'blue’;let name: string = `Gene`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ name }`;

标记(Symbol)

  • 自 ECMAScript2015起, symbol成为了一种新的原生类型,就像 number和 string一样。
  • symbol类型的值是通过 Symbol构造函数创建的
let sym1 = Symbol();
let sym2 = Symbol('key’); // 可选的字符串key
  • Symbols是不可改变且唯一的。
let sym3 = Symbol('key');
let sym4 = Symbol('key');
sym3 === sym4; // false, symbols是唯一的
  • symbols也可以被用做对象属性的键。
let sym = Symbol();
let obj = {[sym]: 'value',
};
console.log(obj[sym]); // "value"
  • Symbols也可以与计算出的 属性名声明相结合,来声明对象的属性和类成员。
const getClassNameSymbol = Symbol();
class C {[getClassNameSymbol]() {return 'C';}
}
let c = new C();let className = c[getClassNameSymbol](); // "C"

数组(Array)

  • TypeScript像 JavaScript一样可以操作数组元素。
  • 有两种方式可以定义数组。
  • 第一种,可以在元素类型后面接上 [],表示由此类型元素组成的一个数组:
let list: number[] = [1, 2, 3];
  • 第二种方式是使用数组泛型, Array<元素类型>:
let list1: Array<number> = [1, 2, 3];

元组(Tuple)

  • 元组类型允许表示一个 已知元素数量 和 类型的数组,各元素的类型不必相同。
// 比如,你可以定义一对值分别为 string和 number类型的元组。
// Declare a tuple type
let x: [string, number];// Initialize it
x = ['hello', 10]; // OK// Initialize it incorrectly
x = [10, 'hello']; // Error// 当访问一个已知索引的元素,会得到正确的类型:
console.log(x[0].substring(1)); // OK
console.log(x[1].substring(1)); // Error, 'number' does not have 'substring'// 超出
x[3] = 'world'; // Error, Property '3' does not exist on type '[string, number]'.
console.log(x[5].toString()); // Error, Property '5' does not exist on type '[string, number]'.

枚举(Enum)

  • enum类型是对 JavaScript标准数据类型的一个补充。像 C#等其它语言一样,使用枚举类型可以为一组数值赋予友好的名字
enum Color {Red,Green,Blue,
}
// 默认情况下,从 0开始为元素编号。
let c: Color = Color.Green; // 1// 手动的指定成员的数值
enum Color {Red = 1,Green,Blue,
}
let c: Color = Color.Green; // 2// 或者,全部都采用手动赋值:
enum Color {Red = 1,Green = 2,Blue = 4,
}
let c: Color = Color.Green; // 2// 初始其中一个值
enum Color {Red = 1,Green,Blue,
}let colorName: string = Color[2];
console.log(colorName);
// 显示'Green'因为上面代码里它的值是2// 指定枚举值为字符串
const { log } = console;
enum Color {Red = 'rRed',Green = 'rGreen',Blue = 'rBlue',
}
const c: Color = Color.Red; // 1
log(c); // rRed
log(Color.Green); // rGreen
log(Color.Blue); // rBlue// 请注意这边如果将枚举值指定为非 number类型的值,
// 则需要每个枚举值都进行手动赋值,否则就会报错 Enummember must have initializer.。
enum Color {Red = 'rRed',Green,Blue,
} // Enum member must have initializer.// 注意这边如果将枚举值指定为非 number类型的值,则需要每个枚举值都进行手动赋值,
// 同时,除了 number类型,手动赋值的类型需要为同一种类型
// fine-好的
enum Color {Red = 0,Green = 'rGreen',Blue = 'rBlue',
}// Computed values are not permitted in an enum with string valued members.
enum Color {Red = true,Green = 'rGreen',Blue = 'rBlue',
}// 指定枚举值为布尔值
enum Color {Red = 0,Green = true, // Type 'true' is not assignable to type 'Color'Blue = false, // Type 'false' is not assignable to type 'Color'
}// 指定枚举值为 null和 undefined
enum Color {Red = 0,Green = null, // Type 'null' is not assignable to type 'Color'Blue = undefined, // Type 'undefined' is not assignable to type 'Color'
}// 指定枚举值为 array和 object
enum Color {Red = 0,Green = [], // Type 'never[]' is not assignable to type 'Color'Blue = {}, // Type '{}' is not assignable to type 'Color'
}// 指定枚举值为 symbol
const sys = Symbol();
enum Color {Red = 0,Green = sys, // Type 'unique symbol' is not assignable to type 'Color'.Blue, // Type '{}' is not assignable to type 'Color'
}

任意类型(Any)

  • 想要为那些在编程阶段还不清楚类型的变量指定一个类型。这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。
  • 不希望 类型检查器对这些值进行检查而是直接让它们通过 编译阶段的检查。可以使用 any类型来标记这些变量
  • any类型是十分有用的,允许你在编译时可选择地包含或移除类型检查。
let notSure: any = 4;
notSure = 'maybe a string instead';
notSure = false; // okay, definitely a booleanlet notSure: any = 4;
notSure.ifItExists(); //  TSLint will not throw Error, okay, ifItExists might exist at runtime
notSure.toFixed(); // TSLint will not throw Error, okay, toFixed exists (but the compiler doesn't check)// Object类型的变量只是允许你给它赋任意值,但是却不能够在它上面调用任意的方法,即便它真的有这些方法:
let prettySure: Object = 4;
prettySure.toFixed(); // TSLint will throw Error: Property 'toFixed' does not exist on type 'Object'.

null

  • JavaScript 中 null表示 "什么都没有",是一个只有一个值的特殊类型,表示一个空对象引用,
  • 默认情况下nullundefined是所有类型的子类型,可以把 null和 undefined赋值给 number类型的变量

undefined

  • undefined表示一个没有设置值的变量
  • 默认情况下nullundefined是所有类型的子类型,可以把 null和 undefined赋值给 number类型的变量

<aside>

TS DataType相关推荐

  1. php datatype=quot;requirequot;,我的问题谁能帮我解决一下??

    葬2017-12-05 08:34:432楼 这是use.php namespace app\index\controller; use app\index\controller\Base; use ...

  2. ts定义html是什么类型,TypeScript—类型定义文件(*.d.ts)

    一.ts文件中引入jquery. 1.大家是否有再vue 上使用过 ts,并再 .ts文件中引用过 jquery 1.1是不是遇到过如下问题: import $ from 'jquery'; /*** ...

  3. vue3+ts+element-plus(包含vuex、router) 随笔

    #vue3与vue2区别以及vue3优点 默认进行懒观察(lazy observation)在 2.x 版本里,不管数据多大,都会在一开始就为其创建观察者.当数据很大时,这可能会在页面载入时造成明显的 ...

  4. vue3.0+TS使用

    ts+ref //定义简单数据类型 //需要注意,指定了一个泛型参数但没有给出初始值,那么最后得到的就将是一个包含 undefined 的联合类型: // 推导得到的类型:Ref<boolean ...

  5. 灯鹭cc在TS的box.load函数下无妨显示的尴尬解决方法

    TS开源程序建立在thinkphp框架之上.其中的ui函数封装了淘宝的kissy.ui.box.load可以以弹出页面的形式引用一个页面.如下: load:function(data,option,t ...

  6. react + ts 下的开发经验汇总

    学习过java语言,才发现类型标注的重要性,在前端,js最让人诟病的便是无类型规范,可以随意赋值和改变类型等,这样项目出现bug的几率大大增加,而js的超集typescript完美解决了这个问题.(别 ...

  7. TypeScript入门篇——基础知识(快速了解js与ts差异)

    写在前面 本篇文章是我初学typescript的笔记,希望可以为看到的朋友提供帮助. 推荐视频:https://www.bilibili.com/video/av38379328/?p=14& ...

  8. egg extend ts_KPL官方给各战队排T次:大王DYG,AG是老2、TS仅K

    点击蓝色关注 更多精彩内容等你~ 2020KPL秋季赛常规赛前两周比赛已经圆满结束了,而第3周比赛也已经正式开打了.KPL常规赛的赛程已经过去5分之1了!而KPL官方根据各大KPL战队截至目前的表现, ...

  9. vue 后台返回的文件流进行预览_基于 Vue3+Ts 后台前端管理系统Vue3-Admin

    今天再给大家分享一款超不错的Vue中后台管理系统Vue3Admin. vue3-admin 基于VueCli4+Ts+ElementUI构建的后台系统.采用组件化开发模式及Flex布局,支持移动端适配 ...

最新文章

  1. [译] 写给前端开发者的 GraphQL 指南
  2. WebGIS在行业中应用的演变
  3. 计算机网络-OSPF协议
  4. AOP开发——在不修改源代码的前提下,对类里面的方法进行增强 : 前置 后置 环绕 异常||如何得到目标方法的参数和返回值
  5. 实训09.08:简单的算法练习
  6. CSS之中间固定两边自适应宽度
  7. 《零基础》MySQL GROUP BY 语句(十九)
  8. WordPress删除重复文章插件
  9. 详解Oracle临时表的几种用法及意义
  10. HUAS 1482 lsy的后宫(DP+矩阵快速幂)
  11. Atitit  J2EE平台相关规范--39个  3.J2SE平台相关规范--42个
  12. 集成电路设计专业有计算机课程吗,集成电路属于什么专业大类 什么学科
  13. PCB布局布线注意事项
  14. 计算机主机序列,SCCM任务序列自动根据SN号命名计算机
  15. 学编程c语言高考能加分吗,编程已列入中高考,孩子升学加分的机会你抓住了么?...
  16. 【计算机网络】-- 第一章--概述(概念、组成、功能、分类、性能指标、体系结构)
  17. 五个喜欢点赞图标动画特效(附源码,效果图)
  18. 【数据安全】数据脱敏解决方案
  19. 阿里云ACP云计算认证通过总结
  20. 【每天一个 Linux 命令】网络相关命令(ifconfig、route、ping、traceroute、netstat、ss、telnet、rcp、scp)

热门文章

  1. usb2.0、usb3.0、usb3.1、type-c 接口含义与区别
  2. 2021年11月网络规划设计师上午试题
  3. 潭州课堂25班:Ph201805201 django框架 第五课 自定义简单标签,包含标签,模型类创建,梳理类创建 (课堂笔记)...
  4. centos6.5 安装hadoop1.2.1亲测版
  5. AutoFac+MVC+WebApi源码----我踩过的坑
  6. The 15th UESTC Programming Contest Preliminary D - Destr0y City cdoj1558
  7. Jlink-v8 灯不亮重新烧写固件的办法
  8. Flutter打包iOS上传 AppStore ERROR ITMS-90432: “Invalid Swift Support. The file Runner.app/Frameworks/.l
  9. #pragma mark 基本使用
  10. 分支限界法|Branch and Bound Method(0-1背包问题)