美文网首页
TypeScript全解:深入对象与函数(上)

TypeScript全解:深入对象与函数(上)

作者: littleyu | 来源:发表于2023-06-10 21:37 被阅读0次

深入对象

索引签名(Index Signature)

我们已经很熟悉了

type Hash = {
  [key: stirng]: unknown;
  length: number;
}
type List {
  [key: number]: unknown;
  length: number;
}

映射类型(Mapped Type)

多用于泛型

type List {
  [key in string]: unknown;
}

type List {
  [key in number]: unknown;
}

可选类型

对象的某个属性可用可不用

interface Person {
  name: string;
  age: number;
  onChange?: () => void;
}

const p: Person = {
  name: 'hi',
  age: 18
}

只读类型

表示只读,不能写

interface Person {
  name: string;
  age: number;
  readonly id: number;
}
const p: Person = {
  name: 'hi',
  age: 18,
  id: 1,
}
p.name = 'new name'

p.id = 2 // TODO: 报错,Cannot assign to 'id' because it is a read-only property.ts

深入函数

对象的语法全都适用于函数,函数也可以用对象来声明

type F = {
  (a: number, b: number) => void;
  count: number;
}

// 普通声明
type F1 = (a: number, b: number) => void

声明方式

JS 函数的三种声明方式

function f1(a) {
  /* ... */
}

const f2 = function(a) {
  /* ... */
}

const f3 = () => {
  /* ... */
}

那么相对应 TS 的

function f1(a: number): number {
  /* ... */
}

const f2 = function (a: number): number {
  /* ... */
}

const f3 = (a: number): number => {
  /* ... */
}

// 也可以把类型提取出来,写在等号左边,比较推荐
type F2 = (a: number) => number

const f2: F2 = function (a) {
  /* ... */
}

可选参数

function addEventListener(eventType: string, fn: unknown, useCapture?: boolean) { // TODO: 加上问号就好了
  /* ... */
}

addEventListener('click', () => 1)

参数默认值

实际情况我们会更倾向于使用默认值

// 和上面的代码等价

function addEventListener(eventType: string, fn: unknown, useCapture=false) {
  /* ... */
}

addEventListener('click', () => 1)

返回值也是函数

type Add = (x: number) => (y: number) => number

const add: Add = a => b => a + b

相关文章

  • 协变与逆变

    必看 协变与逆变 | 深入理解 TypeScript TypeScript: Playground

  • TypeScript函数调用签名

    TypeScript函数调用签名 函数在本质是一个对象,但特殊地方在于函数是可调用的对象。因此,可以使用对象类型来...

  • TypeScript-函数(全)

    返回值类型 语法function 函数名():返回值类型{​ 函数主体...}let 变量名:变量类型 = ...

  • 函数全解

    1.函数是什么? 子程序(routine):一个或多个语句组成,完成特定任务,相对独立。分为【函数】、【过程】、【...

  • 函数全解

    函数的环境 函数是什么 函数的返回值有什么确定 影响因素调用时输入的参数 params定义时的环境 env 上面的...

  • python面向对象编程全解

    python面向对象编程全解。 面向对象技术简介 一个类占有一个独立的空间,类中的属性叫做类变量,类中的函数,叫做...

  • 《菜鸟教程》-TypeScript Number

    TypeScript 与 JavaScript 类似,支持 Number 对象。Number 对象是原始数值的包装...

  • 《TypeScript》 - Number对象

    TypeScript 与 JavaScript 类似,支持 Number 对象。Number 对象是原始数值的包装...

  • typescript 函数

    日期: 2019 年 9 月 3 日 typescript 函数 具名函数与匿名函数 和JavaScript一样,...

  • javascript函数全解

    0.0 概述 本文总结了js中函数相关的大部分用法,对函数用法不是特别清晰的同学可以了解一下。 1.0 简介 同其...

网友评论

      本文标题:TypeScript全解:深入对象与函数(上)

      本文链接:https://www.haomeiwen.com/subject/nnuzedtx.html