ts核心语法

文章介绍了TypeScript的主要优势,如编译时的静态类型检查,接口定义,泛型,以及枚举的使用。同时,讲解了类型注解和类型推导的概念,展示了联合类型、交叉类型和字面量数据类型的用法。此外,文中对比了数字枚举和字符串枚举的差异,并指出never类型在确保代码安全性上的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两天出去面试发现他们都不怎么问ts,可能ts还没有广泛的使用

ts的优势:编译时静态检测(比如定义了字符串类型,使用foreach方法会提示没有这个方法),避免传参和变量赋值不匹配出现编译错误,代码提示更清晰(比如定义了一个obj,编写时会提示它的属性),使用泛型和一些ts特有的类型,ts中的声明文件目录清晰直观展示依赖的接口、type等,即使ts文件有错误大多说情况也可以编译成js,灵活性高虽然是强类型检查语言也提供了any和阿是any断言

下面准备开一个专题也是对自己ts这块的使用和总结

// 类型注解
interface Student {
    name: string,
    age: number
}

let data: number = 2;

let obj: Student = {
    name: '2',
    age: 3
}

// 类型推导
let age = false;

类型注解就是从左边定义约束    类型推导就是右边约束

常用的数据类型

// 基本类型
// number string boolean symbol null undefined
// 根类型这两个是一样的
// Object  {}
// 对象类型
// Array object function
// 枚举
// enum
// 其他特殊类型
// any unknown never void tuple 可变元组
// 合成类型
// 联合类型 交叉类型
// 字面量数据类型

注意事项Object做为根类型不可以赋值

let data: Object = undefined
let data: Object = null

上述是错误的

联合类型(  | )、交叉类型( & ) 字面量数据类型

// 联合类型
let str: string | number = 1
console.log(str)
// 交叉类型
type obj3 = { username: string }
type obj4 = { age: number }
let obj33: obj3 & obj4 = { username: '哈哈', age: 3 }
// 字面量数据类型
type A = number | string
let a: A = 4
type num = number
let n: num = 4
type aa = 1 | 2 | 3
let aa: aa = 3
type flag = 0 | 1
// never 类型存在的意义是写出类型绝对安全的代码

// 比如
type GradeType = "A" | "B" | "C" | "D"
function consoleGrade(grade: GradeType) {
    if (grade == "A") {
        console.log("优秀")
    } else if (grade == "B") {
        console.log("良好")
    } else if (grade == "C") {
        console.log("中等")
    } else if (grade == "D") {
        console.log("及格")
    } else {
        let data = grade // never类型预留
    }
}

枚举类型的定义和访问,字符串枚举和数字枚举的区别

// 数字枚举
enum HH {
    one = 1,
    two,
    three
}
console.log(HH.two, HH[2])


// 字符串枚举
enum HHString {
    one = "一",
    two = "二",
    three = "三"
}
console.log(HHString.two)

 为啥字符串枚举不能通过值访问看编译后的代码

"use strict";
// 数字枚举
var HH;
(function (HH) {
    HH[HH["one"] = 1] = "one";
    HH[HH["two"] = 2] = "two";
    HH[HH["three"] = 3] = "three";
})(HH || (HH = {}));
console.log(HH.two, HH[2]);
// 字符串枚举
var HHString;
(function (HHString) {
    HHString["one"] = "\u4E00";
    HHString["two"] = "\u4E8C";
    HHString["three"] = "\u4E09";
})(HHString || (HHString = {}));
console.log(HHString.two);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值