TypeScript 小白入门到进阶系统教程
文章平均质量分 90
TypeScript 的官方文档早已更新,但我能找到的中文文档都还停留在比较老的版本。所以对其中新增以及修订较多的一些章节进行了翻译整理,并开启了 TypeScript 系列文章的写作。
前端技术栈
看面试题 【web前端面试小助手】 小程序
展开
-
【TypeScript】泛型 (6)
现在我们已经给恒等函数加上了一个类型变量 Type,这个 Type 允许我们捕获用户提供的类型,使得我们在接下来可以使用这个类型。在现在的写法里,我们可以清楚的知道参数和返回值的类型是同一个。有的时候,我们会希望将泛型参数作为整个接口的参数,这可以让我们清楚的知道传入的是什么参数 (举个例子:Dictionary 而不是 Dictionary)。如果我们传入的是一个全是数字类型的数组,我们的返回值同样是一个全是数字类型的数组,因为 Type 会被当成 number 传入。原创 2023-01-12 18:12:38 · 305 阅读 · 0 评论 -
【TypeScript】对象类型(5)
因为对于类型系统,StringNumberPair 描述了一个数组,索引 0 的值的类型是 string,索引 1 的值的类型是 number。这样,我们就有了一个具有索引签名的接口 StringArray,这个索引签名表示当一个 StringArray 类型的值使用 number 类型的值进行索引的时候,会返回一个 string类型的值。在 TypeScript 中,属性可以被标记为 readonly,这不会改变任何运行时的行为,但在类型检查的时候,一个标记为 readonly的属性是不能被写入的。原创 2023-01-11 15:34:12 · 605 阅读 · 0 评论 -
【TypeScript】 函数 (4)
关于本节原文中的 push down 含义,在《重构》里,就有一个函数下移(Push Down Method)的优化方法,指如果超类中的某个函数只与一个或者少数几个子类有关,那么最好将其从超类中挪走,放到真正关心它的子类中去。即只在超类保留共用的行为。换句话说,如果这样一个返回 void 类型的函数类型 (type vf = () => void), 当被应用的时候,也是可以返回任何值的,但返回的值会被忽略掉。尽管我们在函数声明中,在一个必须参数后,声明了两个可选参数,它依然不能被传入两个参数进行调用。原创 2023-01-11 15:31:42 · 395 阅读 · 0 评论 -
【TypeScript】类型收窄(3)
但这并不是一个好方法,我们不得不用一个非空断言来让类型检查器确信此时 shape.raidus 是存在的,我们在 radius 定义的时候将其设为可选属性,但又在这里将其认为一定存在,前后语义也是不符合的。注意这些赋值语句都有有效的,即便我们已经将 x 改为 number 类型,但我们依然可以将其更改为 string 类型,这是因为 x 最初的声明为 string | number,赋值的时候只会根据正式的声明进行核对。如果传入的是空字符串,真值检查判断为 false,就会进入错误的处理分支。原创 2023-01-10 16:24:13 · 1133 阅读 · 0 评论 -
【TypeScript】常见类型(2)
像这个例子中,类型注解写和没写都是一样的,但一些代码库会显式指定返回值的类型,可能是因为需要编写文档,或者阻止意外修改,亦或者仅仅是个人喜好。但是可以等一等再用,除非你确定要使用它。选项关闭的时候,如果一个值可能是 null 或者 undefined,它依然可以被正确的访问,或者被赋值给任意类型的属性。举个例子,如果你使用 document.getElementById,TypeScript 仅仅知道它会返回一个 HTMLElement,但是你却知道,你要获取的是一个 HTMLCanvasElement。原创 2023-01-10 16:19:05 · 268 阅读 · 0 评论 -
【TypeScript】 基础知识(1)
其实可能会过犹不及,面试官就会重点考察你说的每个细节,因为怀疑你说的都是你从网上看的,而不是你项目中用到的。不管怎样,一旦回答简单,不主动说出你的擅长点,或没有条理很清楚地说出你的亮点,就算我让你通过面试,也不会写上“框架细节了解比较深,数据库应用比较熟练”等之类的好评语,你即使通过技术和后面的综合面试,工资也是比较低的。在做项目介绍的时候,你可以穿插说出一些你的亮点,但请记得,不论在介绍项目还是在回答问题,你当前的职责不是说明亮点而是介绍项目,一旦你详细说,可能会让面试官感觉你跑题了。原创 2023-01-07 17:30:58 · 514 阅读 · 2 评论