Я написал этот код, думая, что типов Союза были возможны таким образом:Машинопись TS2322 ошибки: Union типа в своей очереди функции значения
public static template(templateName, data): [string, boolean]{
var templateFullPath = Template.basePath + Template.templatesFolder + '/' + templateName + Template.templatesAfter + Template.ext;
if(Template.exists(templateFullPath)){
try{
return (Template._load(templateFullPath))(data);
}catch(e){
console.error('Template ' + templateFullPath + ' could not be loaded.');
console.error(e);
}
}else{
console.error('Template ' + templateFullPath + ' could not be found.');
}
return false;
}
Но я получаю следующее сообщение об ошибке:
Using tsc v1.4.1
error TS2322: Type 'boolean' is not assignable to type '[string, boolean]'. Property '0' is missing in type 'Boolean'.
Так что, возможно, функция, возвращающая либо логическое значение, либо строку, не может использовать any
?
Doc TS: http://blogs.msdn.com/b/typescript/archive/2014/11/18/what-s-new-in-the-typescript-type-system.aspx
В то же время, я буду использовать any
Вы можете объявить возвращаемый тип 'string' и вернуть' null' при ошибке. – Paleo
'[string, boolean]' - тип кортежа, который будет иметь строку 'string' в позиции 0 и' boolean' в позиции 1. Тип объединения будет 'string | boolean'. – Fenton
Правильно! Таким образом, можно вернуть переменную, которая может иметь один или другой тип, это просто мой способ написать это неправильно, не так ли? Я пробовал и работает. – Vadorequest