0
Я пытаюсь найти правильную подпись (текущая версия машинопись 1.7) для функции, которая должна принимать только ссылочные типы, а не примитивы:Машинопись: Объявить переменную с типом объекта буквального
function onlyObject(x: ???) {
if (typeof x !== 'object') {
throw "bad arg!";
}
}
Таким образом, для функции выше это должно работать:
onlyObject({ });
onlyObject(new Date());
onlyObject(new Number(1));
onlyObject(null);
onlyObject(function() { });
, но это будет не в состоянии во время компиляции:
onlyObject("awd");
onlyObject(1);
onlyObject(false);
есть тип Object, но в последний раз я слышал, что в машинописном тексте была ошибка, которая позволяла отправлять что-либо при использовании. – toskv
функция onlyObject (x: Date | Number | void | Function) {} ????? Я не считаю, что TypeScript различает число и число или строку и строку, поэтому вам может потребоваться исключить их. Или, может быть, переосмыслить, как вы приближаетесь к проблеме. В идеале у вас есть только один тип для одной переменной. – Jon49
Кроме того, onlyObject (1) и onlyObject (new Number (1)) практически одинаковы в JavaScript, поскольку оба они действуют как объекты, когда они рассматриваются как один, как только они назначены переменной. – Jon49