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。
 
如果仅仅将 undefinednull视为false 类型,可以用 ?? 操作符
 
  • js 中用剩余参数来灵活控制函数参数个数,剩余参数是一个数组,在ts中我们可以显示指定。
  • 箭头函数。输入参数,然后是一个等号和一个大于号(“箭头”),最后是结果值。仅当箭头函数需要执行多个语句时才需要 return 关键字和大括号
  • 一些array的methods
notion image
notion image
  • Array Unpack
使用 … 字符可以将数组解包为多个element。可以进行传参
使用spread operator可以进行数组的concat
  • destructuring array
使用 , 可以忽略 assigning
  • 可以在object 上使用 spread operator
 
  • Object 的原型函数
notion image
默认的原型是 Object 可以自己定义原型
  • js 构造函数
  • 迭代器就是具有next函数的类,一般用闭包来实现:
  • 生成器
spread operator的实现就是使用了生成器。
notion image
  • Object 的keys与values
notion image
返回的keys是string类型的数组。
 
  • JS map
notion image
在JavaScript中,module指的是一种将代码分割为可重用的组件的方法。在ES Modules(即ES6 Modules)中,module是JavaScript的原生模块系统,而在CommonJS中,module是一种通用的模块系统。 以下是JavaScript的module方面的不同点和相应的代码示例:
  1. 导出变量或函数: ES Modules:
CommonJS:
  1. 导入整个模块: ES Modules:
CommonJS:
  1. 默认导出: ES Modules:
CommonJS:
  • 监视编译以及自动运行
可以在package.json中添加:
使用 tsc-watch 包就可以自动编译ts文件然后运行js文件
  • ECMAScript 定义了 JavaScript 的实现标准,可以认为二者等价。
  • 在 tsconfig.json 文件中定义:
就能够以 es module import 的方式将ts文件解析为 commandjs,并且导入包的时候甚至可以略去后缀。
  • 编译选项noImplicityAny 可以控制是否禁止隐式的any
  • type union
notion image
  • 类型强转换
notion image
  • 非空断言
notion image
  • 强制让变量在使用前一定要赋值
    • 使用初始赋值断言
    • notion image
    • 或者在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
notion image
  • 使用shape union的数组
  • object insertion 使用 & 符号,表示两个object的组合。说实话我觉得这玩意基本没啥用,这里姑且记一下。
  • JavaScript使用 # 表示私有字段
notion image
  • readonly关键字只能由构造函数进行分配
 

© songlinLife 2023 - 2025