typescript基础知识|青训营笔记

57 阅读2分钟

前言\underline{\text{前言}}
这门课之前刚学习了js,看到这门语言我的第一想法就是,这和js有什么关系为啥名字这么像?

TypeScript 是 Javascript 的超集,遵循最新的 ES6、ES5 规范,TypeScript 扩展了 JavaScript 的语法。TypeScript 更像后端 Java、C#这样的面向对象语言,可以让 JavaScript 开发大型企业项目。

与js的区别

  • typescript是js超集,用于解决大型项目代码复杂的问题。
  • 支持静态和动态类型,可以通过编译发现错误。
  • 不允许改变变量的数据类型。

基础知识

基本类型

//bool类型
let flag: boolean = true;
// 数字类型
let num: number = 123;
let num: number = 3.1415926;
// 字符串
let str: string = "Hello,TypeScript";
// 数组
let arr: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
// 元组
let user: [number, string];
let userId = 10086;
user = [userId, userName];     
//enum枚举类型
enum Flag {
    success,
    error,
    overtime
};
let s: Flag = Flag.overtime;
console.log(s);

//null类型
let n: null = null;
//undefined类型
let u: undefined = undefined;
//any类型  TypeScript 中的 any 类型表示任意数据类型。
let flag: any = true;//布尔型
let num: any = 123;//数字型
let str: any = 'TypeScript';//字符型

函数

基本格式:

function 函数名(参数列表): 返回值类型 {
    函数体 ...
    [return 返回值;]
}
  
function add(x:any[]):any{
    if(typeof x[0]==='string'){
        return x.join()
    }
    if(typeof x[0]==='number'){
        return x.reduce((acc,cur)=>acc+cur)
    )
}

特点:

  1. 增加了public/private/protected修饰符。
  2. 抽象类只能继承,抽象方法必须被子类实现。
  3. 约束类使用inplements关键字

接口

接口是一种规范的定义,它定义了行为和动作的规范,用途就是对行为和动作进行规范和约束。

//函数类型接口
interface encrypt {
    (key: string, value: string): string;
}

var md5: encrypt = function (key: string, value: string): string {
    return key + "----" + value;
}
console.log(md5("name", "zhangsan"));

var sha1: encrypt = function (key: string, value: string): string {
    return key + "====" + value;
}
console.log(sha1("name", "lisi"));

高级类型

联合类型

“|”表示联合类型

function getlength(arg:number|string):number{
    reutrn arg.length
}

交叉类型

“&”表示交叉类型

interface Person { name: string }
interface People { sex: string }
type PersonMan = Person & People

泛型

泛型指的是在定义函数/接口/类型时,不预先指定具体的类型,而是在使用的时候在指定类型限制的一种特性。

function test <T> (arg:T):T{
  console.log(arg);
  return arg;
}

基础操作符

typeof:获取类型
keyof:获取所有键
in:遍历枚举类型
T [K]:索引访问
extends:泛型约束
Partial:类型属性变为可选
Required:类型属性变为必选

总结

typescript以js为基础,扩展了javascript的语法,在语法上与java等语言十分相似,在学习中可以类比这几种语言,寻找ts与javascript和java的相同点和不同点,帮助我们更快学习。