mya*_*sev 10 typescript typescript1.4
是否可以创建一个typeguard或其他完成相同目的的东西来检查变量是否是打字稿联合中的特定接口类型?
interface Foo { a:string }
interface Bar { b:string }
(function() {
function doStuff(thing: Foo | Bar) {
if(typeof thing === 'Foo') {
console.log('Foo');
}
else if (typeof thing === 'Bar') {
console.log('Bar');
}
else {
console.log('unknown');
}
}
var thing: Foo = {a:'a'};
doStuff(thing);
})();
Run Code Online (Sandbox Code Playgroud)
从Typescript 1.6开始,您可以使用用户定义的类型保护:
let isFoo = (object: Foo| Bar): object is Foo => {
return "a" in object;
}
Run Code Online (Sandbox Code Playgroud)
请参阅https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards
typeof
不这样做.它总是返回"string","number","boolean","object","function"或"undefined".
您可以使用if(thing.a !== undefined) {
或等测试来测试对象属性if(thing.hasOwnProperty('a')) {
.
请注意,您可以创建一个既包含字符串a
又包含字符串的对象b
,因此请注意这种可能性.
归档时间: |
|
查看次数: |
4943 次 |
最近记录: |