typescript 入门

node 环境配置

安装

npm i -g typescript (自带编译工具tsc)

ts 中的基本类型

-number:数字
-string:字符串
-boolean:布尔
-Array:数组

let num:Array<number>//数字类型的数组 约束 或者 let num:number[]

-object:对象
-null 和 undefined 是所有类型的子类型 可以通过tsconfig进行配置 进行严格判断

let obj:object = {

}

其他常用类型

-联合类型
类型保护:当对某个变量进行类型判断后,在判断语句中可以确定其确切类型;比如typeof方法触发

let exam:number | string;

-void 表示返回值为空,一般用来约束函数返回值
-never 表示函数永远不会结束 比如throw 错误的函数
-字面量类型

let obj:'男' | '女';//只能取男或女

let obj:{
    name:string,
    age:number
}
obj = {
  name:'1',
  age:2  
}

-元组类型 一个有限长度的数组且每一项的类型是确定
-any类型:任何类型,可以绕过两类型检查

类型别名

type u= {
    name:string,
    gender:'男'|'女'
}
function test(arg:u):[]{
 return []
}
test({
    name:"zhangsan",
    gender:'男'
    
})

函数相关

函数重载:在函数实现之前,对一个函数的多种情况进行声明;

//函数约束
function test(a:number):numder{

}
function test(a:string):string{

}
//可选参数
function test(a:string,b?:string){}
function test(a;string,b:string = "默认"){} //默认参数一定可选参数

枚举

即有确定的取值范围 字段值可以使数字或字符串
枚举参与编译 编译的结果是真实值
数字枚举可不赋值可根据第一个值进行自动推导自增;
比如enum level= {
num1,
num2,
}
let n:level = 1;
=>num2 = 2;
注意:使用枚举时尽量使用逻辑值 即名称;
尽量不要在一个枚举中出现数字有出现字符串字段;

enum Gender{
    male = "男",
    femal= "女"
}
let gender:Gender = Genger.femal;
 gender = Gender.male;

枚举的位运算

例:权限组合

enum PermissionAuthr  {
    Read = 1,
    Write = 2,
    Create = 4,
    Delete = 8
}

扩展类型 接口

ts接口:用来越约束类,对象、函数的标准。

//用来约束类
interface User{
    name:string,
    age:number,
    sayHello:()=> void
}
let u:User = {
    name:'zhangsan',
    age:33,
    sayHello:function(){

    }
}

type condition = (N:number)=>boolean; //类型别名约束函数
function sum(array:number[],calback:condition){
    let s = 0;
    array.forEach((n)=>{
    if(calback(n)){
        s += n
    }
    })
    return s
}
interface conditions {
    (n:number):boolean; //接口约束函数
}
function sum2(array:number[],calback:condition){
    let s = 0;
    array.forEach((n)=>{
    if(calback(n)){
        s += n
    }
    })
    return s
}

接口可以继承
子接口不能覆盖父接口成员

interface A {
    t1:String
}
interface C{
    t3:String
}
interface B extends A{
    t2:number
}
interface B extends A,C{
    t2:number
}
let group:B = {
    t1:"HELLO",
    t2:2
}
//用类型别名实现类似的组合效果 交叉类型
let group:C = {
    t1:"HELLO",
    t2:2
}
type C = {
    
} & A & B

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容