当前位置: 首页 > news >正文

八、typescript 高级类型与模块

八、高级类型

 //  别名<T>:type类似于interfacetype con<T>={calue:T}type tree<T>={left:tree<T>;right:tree<T>}type Link<T> = T&{next:Link<T>}interface Person{name:string}var peo:Link<Person>var s = peo.namevar s = peo.next.namevar s = peo.next.next.next.name
  **迭代器和生成器**for...of 遍历可迭代的对象.调用对象的Symbol.iterator方法
   //let arrr=[1, false,'str']for(let enter in arr){console.log(enter)  //1  false   'str'}
  for..of  和 for..in 都是可迭代一个列表,但是迭代的值不同,for..in迭代的是对象的键的列表,而for...of则迭代的是对象的键对应的值
     let  list = [ 4, 5, 6]for(let i  in list){console.log(i)    // 0  1   2}for(let i  of list){console.log(i)   // 4  5  6}
  for..in 可以操作任何对象,提供了查看对象熟悉的一种方法,但for...of关注与迭代对象的值,内置对象Map和Set实现了Symbol.iterator方法
    
let pets = new Set(["Cat", "Dog", "Hamster"]); 
pets["species"] = "mammals"; for (let pet in pets) {console.log(pet); // "species" 
} for (let pet of pets) { console.log(pet); // "Cat", "Dog", "Hamster"
}

九、模块
导出: export

export class P{a(s:string){return a}}

重命名 as

 export {P}export {P as Pserson}默认导出: export default P

导入:import

 import { P } from  '...'import * as all  from '...'import '...'

重命名:as

 import { P as Pname} from '...'
 export =import = require()//若使用export = 导出一个模块,则必须使用ts特定语法 import module=require('module')来导入此模块
 //testclass P {a(s:string){return s.length}}export = P//导入import P = require('./test')//模块声明通配符 *declare module "*!test"{const content:string;export default content;}seclare module "json!*"{const content:any;export default content}import con from './yyy!text';import con from './json!yyyyy'// umd模块:export function isP(x:number):boolean;export as namespace math;import {isP}  from './test'isP(2)math.isP(2)  //error  不能再模块内使用全局定义 不导入模块不报错

相关文章:

  • 【每日一题】LeetCode206.反转链表
  • Python圣诞树代码
  • 【UML】第12篇 序列图(1/2)——基本概念和构成
  • [数据结构]树与二叉树的性质
  • ------- 计算机网络基础
  • 思福迪运维安全管理系统 test_qrcode_b RCE漏洞复现
  • 【FPGA】Verilog 实践:优先级编码器 | Priority encoder
  • 一个实用的Wrapper类,解决mfc使用sqlite3时的中文乱码问题
  • W5500-EVB-Pico评估版介绍
  • 二、C#基础语法( 异常处理)
  • 使用JAVA Zookeeper构建分布式键值存储
  • STM32移植LVGL图形库
  • ❀My排序算法学习之选择排序❀
  • 【Linux】线程池设计/单例模式/STL、智能指针与线程安全/读者写者问题
  • PostgreSQL10数据库源码安装及plpython2u、uuid-ossp插件安装
  • Android开源项目规范总结
  • Django 博客开发教程 8 - 博客文章详情页
  • ES6核心特性
  • go append函数以及写入
  • java多线程
  • js操作时间(持续更新)
  • Ruby 2.x 源代码分析:扩展 概述
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • 第2章 网络文档
  • 番外篇1:在Windows环境下安装JDK
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 前端自动化解决方案
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 消息队列系列二(IOT中消息队列的应用)
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #pragma pack(1)
  • (1)bark-ml
  • (3)llvm ir转换过程
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (ZT)一个美国文科博士的YardLife
  • (备忘)Java Map 遍历
  • (初研) Sentence-embedding fine-tune notebook
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (利用IDEA+Maven)定制属于自己的jar包
  • (五)网络优化与超参数选择--九五小庞
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)Windows2003安全设置/维护
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .net2005怎么读string形的xml,不是xml文件。
  • .NET使用存储过程实现对数据库的增删改查
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @EnableConfigurationProperties注解使用
  • @vue/cli 3.x+引入jQuery