首页 前端知识 【快速了解TypeScript】Ts中的数据类型

【快速了解TypeScript】Ts中的数据类型

2024-05-19 09:05:58 前端知识 前端哥 110 607 我要收藏
ts常见的数据类型string,number,null,undefined等.....
string,number,boolean,数组
letstr:string='helloWorld';
letnum:number=2;
letbool:boolean=true
letarr1:string[] = ['1','2','3'] // 该数组内只能存放字符串类型的数组
letarr2:number[] = [1,2,3] // 该数组内只能存放数字类型的数组
// 第二种定义数组的方法
letarr3:Array<string>= ['1','2','3']
any类型
letobj:any= { // 不指定obj的类型他就会自定认为obj是个对象
    a: 1
}
obj.foo=10;
letnumbers: string=obj;

类型注释

let n: number = 10;

n = 0

let b = 'one'// 如果不进行变量类型的注释,那么ts会直接推断出该变量的注释

// error:不能将类型“1”分配给类型“string”。

b = 1

对象类型

function getobject(gt:{n:number,s:string}){

}
getobject({
    n:20,
    s:'one'
    // 不能传入多余的参数
    t:'0'
})
function getobject1(gt:{n:number,s?:string}){
                    // “s?:string”代表该值可传可不传
}
getobject1({
    n:20,
})

联合类型

function getId(id: string | number) {
    // console.log(id.toUpperCase());
    // 通过判断进行类型缩小进而使用部分方法
    if (typeof id === 'string') {
        id.toUpperCase()
    } else {
        console.log(id);
    }
}
getId(101);
getId("101");
function getArr(x: string[] | string) {
    // 使用判断进行对x判断
    if (Array.isArray(x)) {
        console.log(x.join());
    }
    else {
        console.log(x);
    }
}
getArr('1')
getArr(['1', '2', '3'])

定义类型别名

type ID = string | number
function getType(id:ID){

}
getType(10)
getType('22')

interface接口

interface Point {
    x:number,
    k:number
}
function getCoord(gt:Point){

}
getCoord({
    x:100,
    k:20
})
// 扩展接口
interface Animal{
    name:string
}
interface Bear extends Animal{
    body:boolean
}
const bear:Bear ={
    name:'winie',
    body:true

}
// 使用interface添加新字段
interface Mybody{
    one:string
}
interface Mybody{
    two:number
}
const w:Mybody={
    one:'1',
    two:8
}
// 不能使用type进行同名扩展所以之恶能通过&进行扩展
type MyDog={
    a:string
}
// type MyDog={
//     b:string
// }
type MyDogs = MyDog &{
    three:number
}

类型断言

// 断言语法的定义
// 方法1
const myCanvas = document.getElementById('main_canvas') as HTMLCanvasElement
// 方法2
const myCanvas2 = <HTMLCanvasElement> document.getElementById('main_canvas')
// 如何将字符串断言成number类型
// const x = 'hello' as number
// 先将hello断言成一个不知道的类型然后在进行number的断言
const x = ('hello' as unknown) as number

文字类型

// 字符串文字类型
var testString = 'helloworld'
testString = 'HELLO-WORLD'
const constString = '不可变'
// constString = ''//报错:无法分配到"constString" ,因为它是常数。

let q: 'hello' = 'hello'// q的值只能为‘hello’这个字符串
// q = '1'// 不能将类型" 1""分配给类型"hello"
function getText(s: string, alignmet: 'top' | 'center' | 'bootom') {
    // 在这里我们的alignmet就只能用所给的三个字符串了

}
// 所以我们在调用的时候只能给alignmet这个变量的值为固定的其中一个
getText('you', 'top')
// 数字文字类型
function getNumber(n: string, m: string): -1 | 0 | 1 {
// 如果n===m就返回0,n>m返回1,n<m返回-1
    return n === m ? 0 : n > m ? 1 : -1
}
// 写个接口
interface Options{
    opp:number
}

function getInfe(x:Options|'one'){

}
// 参数类行必须符合options或者是‘one’
getInfe({opp:200})
getInfe('one')

null&undefined类型

// 关闭tsconfig里面的"strict"在书写下列代码才能狗定义为null/unidentified
let z: undefined = undefined
let y: null = null
function doSomething(x:string |null){
    if(x===null){
        console.log(x);
        
    }else{
        console.log(x.toUpperCase());
    }
}
function liveDangerously(x?:number | null){
    console.log(x!.toFixed());
}

枚举

// 枚举
enum Direction{
    Up=1,
    Down,
    Left,
    Right
}
console.log(Direction.Up);// 1
console.log(Direction.Down);// 2
console.log(Direction.Left);// 3
console.log(Direction.Right);// 4

而经过编译后的js代码如下

点赞:您的赞赏是我前进的动力! 👍
收藏:您的支持我是创作的源泉! ⭐
评论:您的建议是我改进的良药! ✍
山鱼的个人社区:欢迎大家加入我的个人社区—— 山鱼社区

转载请注明出处或者链接地址:https://www.qianduange.cn//article/8880.html
标签
评论
会员中心 联系我 留言建议 回顶部
复制成功!