1、原始数据类型
JavaScript 的类型分为两种:原始数据类型和对象数据类型。原始数据类型包括布尔值、数值、字符串、null、undefined 以及 ES6 中的 Symbol。
前五种数据类型在 TypeScript 中的应用。
注意布尔值:在 JavaScript 中,boolean 是一种基本的数据类型,Boolean 是一个将布尔值打包的布尔对象。在 TypeScript 中,boolean 也是基本数据类型,但是 Boolean 是构造函数。
2、在 TypeScript 中:
* 二进制或八进制表示的数字会被编译成十进制。
* 可以用 void 表示没有返回值的函数。
* 任意值(Any)用来 表示允许赋值为任意类型。在任意值上可以访问任何属性和方法。未指定类型的无初始值的变量会被识别为任意值。
* 联合类型(使用 | 分隔)表示取值可以为多种类型中的一种。当 ts 不确定一个联合属性的变量是哪个类型的时候,只能访问联合类型里的共有属性和方法。
3、对象的类型——接口
接口名一般首字母大写
<template>
interface InterfaceName {
readonly propName: type; // 用 readonly 定义只读属性
propertyName1: type1; // : 表示该属性必需
propertyName2?: type2; // ?: 表示该属性可选
[propertyName: type]: any; // 任意属性
}
注:一旦定义了任意属性,那么确定属性和可选属性都必须是它的子属性。
4、数组的类型
(1) 类型+方括号 表示法
let fibonacci: number[] = [1, 1, 2, 3, 5];
(2) 数组泛型 Array<elemType>
let fibonacci: Array<number> = [1, 1, 2, 3, 5];
(3)用接口表示数组
interface NumberArray {
[idnex: number]: number;
}
let fibonacci: NumberArray = [1, 1, 2, 3, 5]
(4)any 在数组中表示允许出现任意类型
let list: any[] = ['Xcat Liu', 25, {website: 'http://xcatliu.com'}]
(5)类数组
5、函数的类型
JS 中函数声明的方式有:函数声明和函数表达式。
TS 中,要对函数的输入输出有约束
(1)函数声明:
function sum(x: number, y: number): number {
return x + y;
}
(2)函数表达式:
let sum: (x: number, y: number) => number = function (x: number, y: number): number {
return x + y;
}
在 TypeScript 中,=> 用来表示函数定义,左边是输入类型,右边是输出类型,不同于 ES6 中的箭头函数(=>)。
(3)用接口定义函数
interface SearchFunc {
(source: string, subString: string): boolean;
}
let mySearch: SearchFunc;
mySearch = function(source: string, subString: string) {
return source.search(subString) !== -1;
}
(4)参数中的可选参数表示方式和接口中的可选属性类似,可选参数必须放在参数列表的最后一项
function bulidName(firistName: string, lastName?: string) {
if (lastName) {
return firistName + ' ' + lastName;
} else {
return firistName;
}
}
TS 中,添加了默认值的参数会被识别为可选参数,此时不受放置位置限制
剩余参数可用 ...rest 表示,rest 参数只能是参数列表中的最后一项
(5)断言类型:常用于联合类型
语法:<type>value 或 value as type
function getLength(something: string | number):number {
if (<string>something.length) {
return <string>something.length;
} else {
return something.toString().length();
}
}
断言不是类型转换,不能将变量断言成一个联合类型中不存在的类型。
6、类型别名:用 type 创建类型别名,常用于联合类型
type Name = string;
type Nameresolver = () => string;
type NameOrResolver = Name | NameOrResolver;
function getName(n: NameOrResolver): Name{
if (typeof n === 'string') {
return n;
} else {
return n();
}
}
7、字符串字面量类型:用来约束取值只能是某几个字符串中的一个
8、元组:合并了不同类型的对象
可以对元组中的某一项进行赋值,若直接对元组类型的变量进行初始化或者负值,需要提供所有元祖类型中指定的项。
当赋值给越界的元素时,越界元素的类型会被限制为元组中每个类型的联合类型。
9、枚举(enum):枚举成员会被赋值为从 0 开始递增的数字,同时也会对枚举值到枚举名进行反向映射。
枚举项可以包含常数项和计算所得项。
常数枚举:使用 const enum 定义枚举类型,会在编译阶段被删除,且枚举项不能包含计算所得项。
外部枚举:使用 declare enum 定义枚举类型,常出现在声明文件中。
10、类
ES6 中的类 -- 通过 new 生成新实例的时候,会自动调用构造函数;使用 extends 关键字实现继承,子类中使用 super 关键字来调用
TypeScript 中类的用法:
(1)访问修饰符:public、private 和 protected
private 修饰的属性或方法,在子类中也是不允许访问的;
protected 修饰的属性或方法,允许在子类中访问;
public 修饰的属性或方法,允许在任何地方被访问。
(2)抽象类:不允许被实例化
(3)类的类型:与接口类似
(4)类与接口:一个类可以实现多个接口,用 implements 关键字来实现
(5)接口可以继承接口,可以继承类
11、泛型:定义在函数、接口或类的时候,不预先制定具体的类型,而在使用的时候再指定类型
定义泛型时,可以一次性定义多个类型参数。
泛型约束
泛型接口
泛型类
12、声明合并:若定义了两个相同名字的函数、接口或类,则会合并成一个类型。

参考:https://www.gitbook.com/book/xcatliu/typescript-tutorial/details

TypeScript 入门笔记的更多相关文章

  1. TypeScript 入门教程学习笔记

    TypeScript 入门教程学习笔记 1. 数据类型定义 类型 实例 说明 Number let num: number = 1; 基本类型 String let myName: string = ...

  2. TypeScript 入门自学笔记 — 类型断言(二)

    码文不易,转载请带上本文链接,感谢~ https://www.cnblogs.com/echoyya/p/14558034.html 目录 码文不易,转载请带上本文链接,感谢~ https://www ...

  3. TypeScript入门一:配置TS工作环境

    配置手动编译TS文件工作环境 配置webpack自动化打包编译工作环境(后面补充) 一.TypeScript入门学习引言 进入主题之前,首先说明这个系列的博客是我刚刚接触TypeScript的学习笔记 ...

  4. 每天成长一点---WEB前端学习入门笔记

    WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...

  5. ES6入门笔记

    ES6入门笔记 02 Let&Const.md 增加了块级作用域. 常量 避免了变量提升 03 变量的解构赋值.md var [a, b, c] = [1, 2, 3]; var [[a,d] ...

  6. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  7. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

  8. redis入门笔记(2)

    redis入门笔记(2) 上篇文章介绍了redis的基本情况和支持的数据类型,本篇文章将介绍redis持久化.主从复制.简单的事务支持及发布订阅功能. 持久化 •redis是一个支持持久化的内存数据库 ...

  9. redis入门笔记(1)

    redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...

随机推荐

  1. jdbc.properties文件的配置

    使用配置文件访问数据库的优点是: 一次编写随时调用,数据库类型发生变化只需要修改配置文件. 配置文件的设置: 在配置文件中,key-value对应的方式编写. 不好意思我只用过这两个数据库 :)--- ...

  2. 8、C++指针和自由存储空间

    8.C++指针和自由存储空间 计算机程序在存储数据时必须跟踪3中基本属性. 信息存储在何处 存储的值为多少 存储信息是什么类型. 指针是 一个变量,其存储的是值得内存地址 对于常规变量的地址,只需要对 ...

  3. layer mobile开发layer.full

    Layer For Mobile 之 layer.full() 背景介绍:layer mobile是专门针对手机页面开发的一套框架,具体介绍请看官方文档 http://layer.layui.com/ ...

  4. 【第九届蓝桥杯大赛决赛真题】JAVA大学C组题解

    有空就会更新.... 有的题目重复了:再另一篇帖子:https://www.cnblogs.com/dgwblog/p/9090923.html 02 结果填空(满分29分) 标题:海盗与金币 12名 ...

  5. window 安装 python

    官网地址下载安装包 点击下载 会自动识别你当前的系统,或者点击你需要安装的平台 或者选择其他版本 执行安装 高级选项说明: Install for all users 所有用户可使用 Associat ...

  6. Luogu P2243 电路维修 双端队列BFS

    当转移的代价是0和一个分明不同的权值时,可以用双端队列BFS去跑(你跑最短路也没问题..QWQ) 而对于这道题,边旋转代价是1,不旋转代价是0:可以直接建图最短路,也可以跑BFS 这个题建图很有意思: ...

  7. 蓝桥-青蛙跳杯子(bfs)

    问题描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙 ...

  8. 洛谷 P4269 / loj 2041 [SHOI2015] 聚变反应炉 题解【贪心】【DP】

    树上游戏..二合一? 题目描述 曾经发明了零件组装机的发明家 SHTSC 又公开了他的新发明:聚变反应炉--一种可以产生大量清洁能量的神秘装置. 众所周知,利用核聚变产生的能量有两个难点:一是控制核聚 ...

  9. leetcode 283 Move Zeros; 27 Remove Elements; 26 Remove Duplicated from Sorted Array;

    ,,,,}; //把数组的值赋给vector vector<int> vec(arr, arr+sizeof(arr)/sizeof(int)); 解法一: 时间复杂度O(n) 空间复杂度 ...

  10. BZOJ - 1257 分块 详解

    中文题面 这道题就是LightOJ某题的升级版 前段时间我是直接用√k前暴力后分块的处理方式,然后直接套个等差求和 这次看到了dalao的证明再次让我知道我好菜啊 在这里做下笔记,学习一下对于整除运算 ...