banner
banner
banner
NEWS LETTER

TS-symbols和迭代器和生成器

Scroll down

symbols

基础

创建symbol类型

1
let sym1 = Symbol() // 只能通过Symbol构造函数创建的

Symbols是不可改变且唯一的

1
2
3
let sym2 = Symbol("key")
let sym3 = Symbol("key")
sym2 === sym3 // false

symbols也可以被用做对象属性的键

1
let obj = { [sym]: "value" }

可以与计算出的属性名声明相结合来声明对象的属性和类成员

1
2
3
4
5
6
7
8
9
const getClassNameSymbol = Symbol();
class C {
[getClassNameSymbol](){
return "C"
}
}

let c = new C()
let className = c[getClassNameSymbol]() // "C"

众所周知的Symbols

Symbol.hasInstance

  • 识别一个对象是否是其实例

Symbol.isConcatSpreadable

  • 含义:表示当在一个对象上调用Array.prototype.concat时,这个对象的数组元素是否可展开
  • 返回:布尔值

Symbol.iterator

  • 含义:for-of语句,返回默认迭代器

Symbol.match

  • 含义:正则表达式用来匹配字符串

Symbol.replace

  • 含义:正则表达式用来替换字符串中匹配的子串
  • 含义: 正则表达式返回被匹配部分在字符串中的索引

Symbol.split

  • 含义:正则表达式来用分割字符串

Symbol.species

  • 含义:用来创建派生对象
  • 返回:函数值,为一个构造函数

Symbol.toPrimitive

  • 含义:把对象转换为相应的原始值

Symbol.toStringTag

  • 返回: 创建对象时默认的字符串描述。

Symbol.unscopables

  • 含义:它自己拥有的属性会被with作用域排除在外。
  • 返回:一个对象

Symbol.prototype.description

  • 含义:返回Symbol对象的可选描述的字符串。
  • 语法:
    • Symbol(‘myDescription’).description;
    • Symbol.iterator.description;
    • Symbol.for(‘foo’).description;
  • 示例:
    1
    2
    3
    Symbol('foo').description;      // 'foo'
    Symbol().description; // undefined
    Symbol.for('foo').description; // 'foo'

迭代器和生成器

for…of: 迭代对象的键对应的值

1
2
let x=['a','d']
for(let i of x){} // 遍历的结果是a,d

for…in: 迭代对象的键的列表

1
for(let i in x){} //遍历的结果是值的下标0,1

mixins: 结合,可提前给混合进来的属性方法占位

1
2
3
class a{}
class b{}
class ad implements a,b{}

三斜线指令: /// 单行注释,注释内容会作为编译器指令使用

  1. /// 指令 : 用于声明文件间的依赖。
    • 当使用–out或–outFile时,可调整输出内容的顺序。文件在输出文件内容中的位置与经过预处理后的输入顺序一致。
  2. 如果指定了–noResolve编译选项,三斜线引用会被忽略;它们不会增加新文件,也不会改变给定文件的顺序。
  3. ///<reference types="..." />指令 : 声明了对某个包的依赖。(d.ts文件)
  4. ///<reference no-default-lib="true"/>把一个文件标记成默认库
  5. ///<amd-module />默认情况下生成的AMD模块都是匿名的。允许给编译器传入一个可选的模块名
其他文章
cover
TS-枚举
  • 24/11/01
  • 11:40
  • TypeScript
cover
TS-变量声明
  • 24/11/01
  • 11:40
  • TypeScript
目录导航 置顶
  1. 1. symbols
    1. 1.1. 基础
      1. 1.1.1. 创建symbol类型
      2. 1.1.2. Symbols是不可改变且唯一的
      3. 1.1.3. symbols也可以被用做对象属性的键
      4. 1.1.4. 可以与计算出的属性名声明相结合来声明对象的属性和类成员
    2. 1.2. 众所周知的Symbols
      1. 1.2.1. Symbol.hasInstance
      2. 1.2.2. Symbol.isConcatSpreadable
      3. 1.2.3. Symbol.iterator
      4. 1.2.4. Symbol.match
      5. 1.2.5. Symbol.replace
      6. 1.2.6. Symbol.search
      7. 1.2.7. Symbol.split
      8. 1.2.8. Symbol.species
      9. 1.2.9. Symbol.toPrimitive
      10. 1.2.10. Symbol.toStringTag
      11. 1.2.11. Symbol.unscopables
      12. 1.2.12. Symbol.prototype.description
    3. 1.3. 迭代器和生成器
      1. 1.3.1. for…of: 迭代对象的键对应的值
      2. 1.3.2. for…in: 迭代对象的键的列表
    4. 1.4. mixins: 结合,可提前给混合进来的属性方法占位
    5. 1.5. 三斜线指令: /// 单行注释,注释内容会作为编译器指令使用
请输入关键词进行搜索