TypeScript学习笔记

1.基础类型

布尔,数字,字符串,数组,元组Tuple,枚举,任意值,空值,null和undefined

1.1 元组Tuple

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为string和number类型的元组。

javascript 复制代码
let x: [string, number];
// Initialize it
x = ['hello', 10]; // OK

1.2 枚举

javascript 复制代码
enum Color {Red, Green, Blue};
let c: Color = Color.Green;

1.3数组

javascript 复制代码
let list: number[] = [1, 2, 3];

第二种方式是使用数组泛型,Array<元素类型>:

javascript 复制代码
let list: Array<number> = [1, 2, 3];

1.4 布尔

javascript 复制代码
let isDone: boolean = false;

1.5 数字

javascript 复制代码
let decLiteral: number = 6;

1.6 字符串

javascript 复制代码
let name: string = "bob";
name = "smith";

2.解构赋值

2.1解构数组

javascript 复制代码
let [first, ...rest] = [1, 2, 3, 4];
console.log(first); // outputs 1
console.log(rest); // outputs [ 2, 3, 4 ]

2.2 对象解构

javascript 复制代码
let o = {
    a: "foo",
    b: 12,
    c: "bar"
}
let {a, b} = o;

3 接口

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

function printLabel(labelledObj: LabelledValue) {
  console.log(labelledObj.label);
}

let myObj = {size: 10, label: "Size 10 Object"};
printLabel(myObj);

类型检查器不会去检查属性的顺序,只要相应的属性存在并且类型也是对的就可以。

3.1 可选属性

带有可选属性的接口与普通的接口定义差不多,只是在可选属性名字定义的后面加一个?符号。

可选属性的好处之一是可以对可能存在的属性进行预定义,好处之二是可以捕获引用了不存在的属性时的错误。

3.2 只读属性

一些对象属性只能在对象刚刚创建的时候修改其值。 你可以在属性名前用readonly来指定只读属性:

javascript 复制代码
interface Point {
    readonly x: number;
    readonly y: number;
}

3.3 reladonly 和const的区别

做为变量使用的话用const,若做为属性则使用readonly。

3.4 函数类型

为了使用接口表示函数类型,我们需要给接口定义一个调用签名。 它就像是一个只有参数列表和返回值类型的函数定义。参数列表里的每个参数都需要名字和类型。

javascript 复制代码
interface SearchFunc {
  (source: string, subString: string): boolean;
}

这样定义后,我们可以像使用其它接口一样使用这个函数类型的接口。

javascript 复制代码
let mySearch: SearchFunc;
mySearch = function(source: string, subString: string) {
  let result = source.search(subString);
  if (result == -1) {
    return false;
  }
  else {
    return true;
  }
}

3.5 接口扩展 extends

javascript 复制代码
interface Shape {
    color: string;
}

interface Square extends Shape {
    sideLength: number;
}

let square = <Square>{};
square.color = "blue";
square.sideLength = 10;

4 类

下面看一个使用类的例子:

javascript 复制代码
class Greeter {
    greeting: string;
    constructor(message: string) {
        this.greeting = message;
    }
    greet() {
        return "Hello, " + this.greeting;
    }
}

let greeter = new Greeter("world");
相关推荐
赵谨言2 小时前
多语种在线语言学习平台LinguaVerse的设计与实现毕业论文
学习
一支蜉蝣2 小时前
Day26 XD安全学习笔记--PHP 应用&模版引用&Smarty渲染&MVC 模型&数据联动&RCE 安全
笔记·网络安全·html·php
東隅已逝,桑榆非晚2 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法
欢欢李2 小时前
【LTE L3 笔记 01】LTE空口特点
笔记·无线通信·物理层·lte·空口协议
li星野2 小时前
Regular and Irregular Nouns — One-Page A4 Notes
学习
华玥作者2 小时前
Vue 3 + TypeScript + uni-app 组件库推荐:hy-app(华玥组件库)
vue.js·typescript·uni-app
ZZHow10243 小时前
神经网络与深度学习笔记_Day1
人工智能·pytorch·笔记·python·深度学习·神经网络·机器学习
ACP广源盛139246256734 小时前
选型笔记:HDMI2.1 四进一出切换中继方案 GSV6705@ACP 评估
笔记·硬件架构·硬件工程·视频·国产芯片
Z21-X4 小时前
云原生运维实战笔记:华为云存储类服务全景解析——EVS、OBS、SFS与CBR深度实践
运维·笔记·学习·云原生·华为云
1314lay_10074 小时前
ABAP 程序性能优化总结
经验分享·笔记·性能优化