js或者ts学习笔记
importance
date
Jul 9, 2023
slug
js或ts学习笔记
status
Published
tags
JavaScript
typescript
summary
个人的js或者ts学习笔记
type
Post
- module最多只有一个default export
- 为了使用es module,设置 tsconfig.json
package,json中设置:
在ts中导入某个ts文件时候,需要给定文件后缀名为
.js
- ts中使用 Record<T, R> 来当map
- js中的OR实际上是一个表达式:
输出的结果是
London
,英文 myCity 是 undefined,在 ||
中转换为 false,因此 secondCity
会选择 London
作为值。如果 转换为true,就会选择 myCity,但是这里myCity显然是 undefined。在JS中,undefined null 0 “” NaN 都会转换为false。
如果仅仅将
undefined
和 null
视为false 类型,可以用 ??
操作符- js 中用剩余参数来灵活控制函数参数个数,剩余参数是一个数组,在ts中我们可以显示指定。
- 箭头函数。输入参数,然后是一个等号和一个大于号(“箭头”),最后是结果值。仅当箭头函数需要执行多个语句时才需要 return 关键字和大括号
- 一些array的methods
- Array Unpack
使用 … 字符可以将数组解包为多个element。可以进行传参
使用spread operator可以进行数组的concat
- destructuring array
使用
,
可以忽略 assigning- 可以在object 上使用 spread operator
- Object 的原型函数
默认的原型是
Object
可以自己定义原型- js 构造函数
- 迭代器就是具有next函数的类,一般用闭包来实现:
- 生成器
spread operator的实现就是使用了生成器。
- Object 的keys与values
返回的keys是string类型的数组。
- JS map
在JavaScript中,module指的是一种将代码分割为可重用的组件的方法。在ES Modules(即ES6 Modules)中,module是JavaScript的原生模块系统,而在CommonJS中,module是一种通用的模块系统。
以下是JavaScript的module方面的不同点和相应的代码示例:
- 导出变量或函数: ES Modules:
CommonJS:
- 导入整个模块: ES Modules:
CommonJS:
- 默认导出: ES Modules:
CommonJS:
- 监视编译以及自动运行
可以在package.json中添加:
使用 tsc-watch 包就可以自动编译ts文件然后运行js文件
- ECMAScript 定义了 JavaScript 的实现标准,可以认为二者等价。
- 在 tsconfig.json 文件中定义:
就能够以 es module import 的方式将ts文件解析为 commandjs,并且导入包的时候甚至可以略去后缀。
- 编译选项noImplicityAny 可以控制是否禁止隐式的any
- type union
- 类型强转换
- 非空断言
- 强制让变量在使用前一定要赋值
- 使用初始赋值断言
- 或者在tsconfig.json 中设置
"strictNullChecks": true
- js和ts中函数都不能重载,在js中重复定义函数会覆盖之前的函数。
- 声明重载
对于
calculateTax
函数,只有当amount为null类型时候才会返回null。但是当我们使用 calculateTax
函数的时候,一切都变得非常奇怪。即使我们使用 calculateTax(10)
进行调用,我们确定不会有null返回,但是也不得不在代码中处理 返回值为null 的情况:但是我们可以通过重载函数type来解决这一问题
通过声明传参的type和返回值的type,我个人认为这或许是一种bind,这样可以很
- 可以定义 tuples 类型
但是不允许:
因为rest array后面不能跟着rest array。
- enum
结果:
- 使用 ? 表示 option
- 使用shape union的数组
- object insertion 使用 & 符号,表示两个object的组合。说实话我觉得这玩意基本没啥用,这里姑且记一下。
- JavaScript使用 # 表示私有字段
- readonly关键字只能由构造函数进行分配