Ts-02

ts的核心一切都以安全为基准。

变量:类型

没有类型会进行推导。

基础类型靠推导行了不用强制加。

number 普通类型 Number 类类型 【可以用Number接收1 装箱 反之拆箱】new Number(1) 显示装箱 let s:Number = 1; 隐式装箱。

let ay:Array = \[\];

let ay:number,string = 1, ''; // 元组 默认可以当数组用 用数组的方法

let r = ay.pop(); // r 的类型 number|string|undefined

r.push() 放到时候只能放 number|string 但是正经的来说定了长度不应该在放了。

r2 = '' 不能通过索引来玩 越界了

数据交换可能会用到元组

普通枚举 常量枚举 异构枚举

typescript 复制代码
// 普通枚举
enum ROLE {  // 编译完了是个对象  互为反射 ROLE[ROLE['USER'] = 0] = 'USER'
    USER,   // 0
    ADMIN,  // 1
} 
    
    
// 异构枚举
enum ROLE {
    USER='user', // 字符串不能互为映射没啥索引所以也映射不了。
    ADMIN=5 // 默认数字枚举一定要在字符串枚举之前因为不知道从多少开始。但是可以直接给数字 这就构成异构枚举 
}
    
    
// 常量枚举
const enum ROLE {  // 这个在创建编译的时候就没有对象了 直接用值代替 不会生成一个对象。减少代码容量
    USER,
    A='a'
}

ROLE.USER 完了就是个0
ROLE.A    'a'   
    
// 常量枚举
const enum ROLE {  // 这个在创建编译的时候就没有对象了 直接用值代替 不会生成一个对象。减少代码容量
    USER,
    A='a'
}

ROLE.USER 完了就是个0
ROLE.A    'a'


// null undefined never void object
// 任何类型的字类型 null undefined 它可以赋给其他类型 需要修改ts config 需要把 "strictNullChecks": false 改成false strict改成false也行。 在严格模式undefined 和 null只能赋值给彼此。
    
// never 永远不。代码无法达到终点。throw while(true) 永远走不到的判断。 
function testType(str:string) {
    if(typeof str === 'string') {

    } else {
        // 永远不可达到
        // str 是never类型帮我们代码做完整校验,自己推断出来的。
        // 代码走不到never就没问题走到了never就有问题。 
    }
}
    
// never也是任何类型的子类型。 可以赋给任何值。 never可以赋给void

// void 只能把undefined  赋值给他。 如果想满足 null 需要改下配置文件 strictNullChecks: false

// object 可以接受非原始类型。泛型 约束用这个用的多。

// symbol (es6)  BigInt (es10) 的语法 编译完了还是这样子。   

// 内置类型 自定义类型 高级类型

// 联合类型
let s:number|string;

// 内置类型-ts包里面定义的  
HTMLElement 
const el = document.getElementById("id")!; // el 是 HTMLElement|null类型 ! 放在后面也行
用的时候el?.xxx
//!或者用非空断言
el!.xxx

    
// 直接强转
// 这种语法不兼容jsx
(<HTMLElement>el).xxx
(el as HTMLElement).xxx
// 双层转换
(a as any) as number

// ??
// a??b 如果a不是undefined null 就返回a 否则就b

// 字面量
type s = 'xa'
let x:'a'|'b'|s = 'a';

export {} // 标识当前模块是自己的要不会造成全局冲突。
相关推荐
福兮说6 小时前
纯前端把图片压缩到指定体积:canvas.toBlob 配合二分查找
前端·javascript·canvas·图片处理
是立不是利6 小时前
CSS 入门与进阶:从选择器到响应式布局的完整指南
前端·css
镭立智能制造6 小时前
电线电缆换线频繁?MES系统如何缩短换线时间40%
前端·制造
Amos_Web7 小时前
Rspack 源码解析(五):CodeGenerationPass 与模块代码生成
前端·前端框架·源码阅读
八荒启·交互动画7 小时前
Web特效06——WebGL深挖:顶点着色器和片元着色器到底在干什么
前端·网页特效·八荒启-交互动画·八荒启
这锅我不背哈7 小时前
前端权限控制实践:基于 RBAC 的完整落地方案
前端
星空8 小时前
Map<String, String>`Map`是接口,不能直接 new
java·前端·算法
开开心心就好8 小时前
低年级识字练笔顺工具,电脑和安卓端都能用
前端·javascript·网络·安全·scala·erlang·语音识别
杨利杰YJlio8 小时前
ITSK PE 26U5 测试版解读:组件完善、VMD 修复与服务器支持边界
前端·javascript·后端
志尊宝8 小时前
Vue3 零基础每日笔记(021):class 与 style 动态绑定——对象、数组、三元表达式写法汇总
前端·vue.js·笔记·前端框架·html5