ts學習筆記(4)

類型斷言

interface A{
    teacher():void
}
interface B{
    study():void
}
function fs():A|B{
    return {}as A;
}
var obj=fs();
obj.teacher()//報錯
(<A>obj).teacher()//正確

類型保護

function isTeacher(demo:A|B):demo is A{
    return (<A>demo).teacher!==undefined
}
var obj:A={teacher(){console.log('teacher')}}
console.log(isTeacher(obj))//true

還可以使用typeof和instanceof

類型別名type

type Str=string
type param=()=>Str
function fn(param:param):Str{
   return param()
}
fn(()=>{return "xx"})

type name="xx"|'YY'
function print(param:name){
    console.log(param)
}
print("xx")
print('zz')//報錯

索引簽名

interface C{name:string;age:number,[index:string]:any}
function fn(param:C):void{
    console.log(param)
}
fn({name:'xx',age:20,sex:'female'})

interface C{
    [index:number]:string
}
const arr:C=['xx','pp']

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章