typescript
文章平均质量分 54
豆浆油条_煎bingo子
2646507129
展开
-
【ts类型体操】03312-easy-parameters
需求:实现内置的 Parameters 类型,而不是直接使用它,可参考TypeScript官方文档type MyParameters<T extends (...args: any[]) => any> = anyimport type { Equal, Expect } from '@type-challenges/utils'const foo = (arg1: string, arg2: number): void => {}const bar = (arg1原创 2022-05-09 23:29:22 · 322 阅读 · 0 评论 -
【ts类型体操】03060-easy-unshift
需求:实现类型版本的 Array.unshift。type Unshift<T extends any[], U> = anyimport type { Equal, Expect } from '@type-challenges/utils'import { ExpectFalse, NotEqual } from '@type-challenges/utils'type cases = [ Expect<Equal<Unshift<[], 1>,原创 2022-05-09 23:24:17 · 230 阅读 · 0 评论 -
【ts类型体操】03057-easy-push
需求:在类型系统里实现通用的 Array.push 。type Push<T extends any[], U> = anyimport type { Equal, Expect } from '@type-challenges/utils'import { ExpectFalse, NotEqual } from '@type-challenges/utils'type cases = [ Expect<Equal<Push<[], 1>, [1]原创 2022-05-09 23:20:35 · 283 阅读 · 0 评论 -
【ts类型体操】00898-easy-includes
需求:在类型系统里实现JavaScript的Array.includes方法,这个类型接受两个参数,返回的类型要么是true要么是false。type Includes<T extends readonly any[], U> = anyimport type { Equal, Expect } from '@type-challenges/utils'type cases = [ Expect<Equal<Includes<['Kars',...原创 2022-05-09 23:15:39 · 682 阅读 · 0 评论 -
【ts类型体操】00533-easy-concat
需求:在类型系统里实现 JavaScript 内置的 Array.concat 方法,这个类型接受两个参数,返回的新数组类型应该按照输入参数从左到右的顺序合并为一个新的数组。type Concat<T extends any[], U extends any[]> = anyimport type { Equal, Expect } from '@type-challenges/utils'type cases = [ Expect<Equal<Concat<原创 2022-05-09 23:03:45 · 405 阅读 · 0 评论 -
【ts类型体操】00268-easy-if
需求:实现一个 IF 类型,它接收一个条件类型 C ,一个判断为真时的返回类型 T ,以及一个判断为假时的返回类型 F。 C 只能是 true 或者 false, T 和 F 可以是任意类型。type If<C extends boolean, T, F> = anyimport type { Equal, Expect } from '@type-challenges/utils'type cases = [ Expect<Equal<If<true, '原创 2022-05-09 11:40:09 · 194 阅读 · 0 评论 -
【ts类型体操】00189-easy-awaited
需求:假如我们有一个 Promise 对象,这个 Promise 对象会返回一个类型。在 TS 中,我们用 Promise 中的 T 来描述这个 Promise 返回的类型。type MyAwaited<T extends Promise<any>> = anyimport type { Equal, Expect } from '@type-challenges/utils'type X = Promise<string>type Y = Promis原创 2022-05-09 11:12:11 · 396 阅读 · 0 评论 -
【ts类型体操】00043-easy-exclude
需求:实现内置的Exclude类型,但不能直接使用它本身。type MyExclude<T, U> = anyimport type { Equal, Expect } from '@type-challenges/utils'type cases = [ Expect<Equal<MyExclude<'a' | 'b' | 'c', 'a'>, Exclude<'a' | 'b' | 'c', 'a'>>..原创 2022-05-09 11:00:06 · 227 阅读 · 0 评论 -
【ts类型体操】00018-easy-tuple-length
需求:创建一个通用的Length,接受一个readonly的数组,返回这个数组的长度。type Length<T extends readonly any[]> = anyimport type { Equal, Expect } from '@type-challenges/utils'const tesla = ['tesla', 'model 3', 'model X', 'model Y'] as constconst spaceX = ['FALCON 9', 'F原创 2022-05-08 22:52:46 · 253 阅读 · 0 评论 -
【ts类型体操】00014-easy-first
需求:实现一个通用First<T>,它接受一个数组T并返回它的第一个元素的类型。type First<T extends readonly any[]> = anyimport type { Equal, Expect } from '@type-challenges/utils'type cases = [ Expect<Equal<First<[3, 2, 1]>, 3>>, Expect<Equal<Fir原创 2022-05-08 22:45:25 · 836 阅读 · 0 评论 -
【ts类型体操】00011-easy-tuple-to-object
需求:传入一个元组类型,将这个元组类型转换为对象类型,这个对象类型的键/值都是从元组中遍历出来。type TupleToObject<T extends readonly any[]> = anyimport type { Equal, Expect } from '@type-challenges/utils'const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as consttype cases = [ Ex原创 2022-05-08 22:22:09 · 501 阅读 · 6 评论 -
【ts类型体操】00007-easy-readonly
需求:实现一个MyReadonly,该 Readonly 会接收一个 泛型参数,并返回一个完全一样的类型,只是所有属性都会被 readonly 所修饰。type MyReadonly<T> = anyimport type { Equal, Expect } from '@type-challenges/utils'type cases = [ Expect<Equal<MyReadonly<Todo1>, Readonly<Todo1>&原创 2022-05-08 22:13:13 · 314 阅读 · 1 评论 -
【ts类型体操】00004-easy-pick
要求:实现TS内置的Pick<T,K> 从类型T中选择出属性K,构造一个新的类型type MyPick<T, K>=anyimport type { Equal, Expect } from '@type-challenges/utils'type cases = [ Expect<Equal<Expected1, MyPick<Todo, 'title'>>>, Expect<Equal<Expected2,原创 2022-05-06 17:46:33 · 360 阅读 · 0 评论 -
Install fail Error: Unsupported URL Type “workspace:“: workspace:*
背景:在尝试npm i初始化失败,报错信息为:Install fail! Error: Unsupported URL Type "workspace:": workspace:*原因:检查package.json中的项目依赖版本是否出现[workspace:]。如果使用npm i来安装,它会出现 "不支持的URL类型 "workspace:": workspace:"。如果使用yarn来安装,就ok!解决:1.安装yarnnpm install -g yarn2.安装某个包原创 2022-04-28 11:23:55 · 23790 阅读 · 7 评论 -
TypeScript---泛型
定义一个函数或类时,在一些情况下能够确定要使用的具体类型。function fn(a:number):number{ return a; }而有些情况下无法确定其中要使用的具体类型(返回值、参数、属性的类型不能确定),此时泛型便能够发挥作用。 示例: function test(arg: any): any{ return arg; } 上例中,test函数有一个参数类型不确定,但是能确定的时其返回值的类型和参数的类型是相同的,由于类型不确定所以参数和返回原创 2021-12-14 21:11:11 · 1240 阅读 · 1 评论 -
TypeScript---接口
接口用来定义一个类结构,定义一个类中应该包含哪些属性和方法,同时接口可以当成类型声明去使用。咱们先看看类型怎么使用:type myType = { name:string, age:number } const obj:myType = { name:'jiangjiang', age:18 }而接口(合并声明):interface myInterface{ name:string,原创 2021-12-14 20:55:23 · 214 阅读 · 1 评论 -
TypeScript---面向对象特点
我理解面向对象的编程思想:根据需求,分析对象,找到对象有什么特征和行为,通过代码的方式来实现需求, 要想实现这个需求,就要创建对象,要想创建对象,先定义类,显示构造函数, 然后通过构造函数来创建对象,通过对象调用属性和方法来实现相应的功能及需求。封装 继承 多态封装 对象实质上就是属性和方法的容器,它的主要作用就是存储属性和方法。 默认情况下,对象的属性是可以任意修改的,为了确保数据的安全性,在TS中可以对属性的权限进行设置。 只读属性(readonly):如果在声.原创 2021-12-14 20:30:40 · 950 阅读 · 1 评论 -
TpyeScript---面向对象-类
面向对象是程序中一个非常重要的思想,可以理解为程序之中所有的操作都需要通过对象来完成。举例来说:操作浏览器要使用window对象 操作网页要使用document对象 操作控制台要使用console对象一切操作都要通过对象,也就是所谓的面向对象,那么对象到底是什么呢?这就要先说到程序是什么,计算机程序的本质就是对现实事物的抽象,抽象的反义词是具体。比如: 照片是对一个具体的人的抽象 汽车模型是对具体汽车的抽象 程序也是对事物的抽象,在程序中我们可以表示一个人、一条狗、一把原创 2021-12-14 19:54:16 · 107 阅读 · 0 评论 -
TypeScript---Babel的配置
经过一系列的配置,使得TS和webpack已经结合到了一起,除了webpack,开发中还经常需要结合babel来对代码进行转换以使其可以兼容到更多的浏览器,在上述步骤的基础上,通过以下步骤再将babel引入到项目中。步骤:1.安装依赖包npm i -D @babel/core @babel/preset-env babel-loader core-js -@babel/core babel的核心工具 -@babel/preset-env原创 2021-12-14 17:33:36 · 810 阅读 · 0 评论 -
TypeScript---webpack配置
通常情况下,实际开发中我们都需要使用构建工具对代码进行打包,TS同样也可以结合构建工具一起使用,下边以webpack为例介绍一下如何结合构建工具使用TS。步骤:1.初始化项目- 进入项目根目录,执行命令 npm init -y- 主要作用:创建package.json文件2.下载构建工具npm i -D webpack webpack-cli webpack-dev-server typescript ts-loader clean-webpack-plu原创 2021-12-14 17:26:29 · 490 阅读 · 1 评论 -
TypeScript---编译选项
自动编译文件编译文件时,使用-w指令后,TS编译器会自动监视文件的变化,并在文件发生变化时对文件进行重新编译。tsc xxx.ts -w自动编译整个项目如果直接使用tsc指令,则可以自动将当前项目下的所有ts文件编译为js文件。 但是能直接使用tsc命令的前提时,要现在项目根目录下创建一个ts的配置文件tsconfig.json。 tsconfig.json是一个JSON文件,添加配置文件后,只需要tsc命令即可完成对整个项目的编译。 配置选项:includeO--->原创 2021-12-14 16:33:02 · 626 阅读 · 0 评论 -
TypeScript---基本类型
TypeScript:以JavaScript为基础构建的语言 一个JavaScript的超集 可以在任何支持JavaScript的平台中执行 TypeScript扩展了JavaScript,并添加了类型 TS不能被JS解析器直接执行,TS编译为任意版本的JS【TS完全兼容JS】TypeScript增加了什么?类型(ts给变量添加类型,js的类型是值) 支持ES的新特性 添加了ES不具备的新特性(接口,抽象类) 丰富的配置选项 强大的开发工具TypeScript开发环境的搭建原创 2021-12-14 11:05:35 · 732 阅读 · 2 评论