Typescript 类型脚本联合类型和接口
我是打字新手, 我不明白为什么在调用数组或函数属性时接口不在对象中声明。 若我从任何对象调用它,那个么数组或函数属性就会出错 在这里,我使用address属性作为字符串,然后在makeNewEmployee对象中声明接口,这样就没有错误了。 我对此有点困惑 这是我的密码Typescript 类型脚本联合类型和接口,typescript,interface,Typescript,Interface,我是打字新手, 我不明白为什么在调用数组或函数属性时接口不在对象中声明。 若我从任何对象调用它,那个么数组或函数属性就会出错 在这里,我使用address属性作为字符串,然后在makeNewEmployee对象中声明接口,这样就没有错误了。 我对此有点困惑 这是我的密码 interface makeAnything{ user:string; address:string| string[]| (()=>string); } /// address as string l
interface makeAnything{
user:string;
address:string| string[]| (()=>string);
}
/// address as string
let makeNewEmployee:makeAnything = {
user:"Mirajehossain",
address:"Dhaka,Bangladesh"
};
console.log(makeNewEmployee.address);
在这里,我在makeNewEmployee对象中使用makeAnything接口,并将address属性声明为函数,为什么在控制台中出现错误
///address as function
let makeSingleEmployee:makeAnything = {
user:'Miraje hossain',
address:():any=>{
return{
addr:"road 4,house 3",
phone:18406277
}
}
};
console.log(makeSingleEmployee.address()); ///getting error
您可以使用类型保护来帮助编译器知道
address
是一个函数。看
示例:
// string or string[] cannot be instances of Function. So the compiler infers that `address` must be (()=>string)
if (makeSingleEmployee.address instanceof Function) {
console.log(makeSingleEmployee.address());
}
// typeof makeSingleEmployee.address will be "function" when address is a function
if (typeof makeSingleEmployee.address != "string" && typeof makeSingleEmployee.address != "object" ) {
console.log(makeSingleEmployee.address());
}
或者,如果您确信地址
是一个函数,则可以将其强制转换为任何
:
console.log((makeSingleEmployee as any).address());