Я хочу утвердить тип свойства объектов, чтобы устранить двусмысленность, вызванную тем, что это свойство имеет тип объединения.
interface myObject {
myProperty: customType1|customType2
}
//Now I want to make clear in some other line of code that i know what is
// The type of that property at that time, somthing like this
myObject.<customType1>myProperty
Я искал вокруг, но я не могу найти ничего, относящегося к этому делу, возможно ли это вообще?
Кажется, что защита типа запрашивает тип переменной во время выполнения. это правильно?
Кроме того, дискриминированный союз может быть чем-то еще, на что стоит обратить внимание в этом контексте.
Спасибо за предложения, но мне нужно сообщить TS, какой тип мне нужен, мне не нужно проверять его во время выполнения, как и утверждение типа. Тип объекта в основном зависит от родительского объекта, а не от самого объекта, поэтому размеченный союз, похоже, здесь не применяется (к сожалению)






Кажется, что способ сделать это:
myObject.myProperty = myObject.myProperty as customType1
Спасибо ребятам в комментариях, сегодня я обнаружил несколько интересных функций, но, к счастью, то, что мне было нужно, оказалось довольно простым.
Как упоминалось в документации Typescript, https://www.typescriptlang.org/docs/handbook/advanced-types.html#intersection-types
Сначала утвердите тип родительского свойства, а затем получите доступ к дочернему свойству.
(<customType1>myObject.myProperty)
// or
(myObject.myProperty as customType1)
// if there is any child-property
(myObject.myProperty as customType1)['child_property_of_myproperty'];
Он называется тип гвардии и взгляните также на определяемые пользователем охранники типов, они довольно изящны: typescriptlang.org/docs/handbook/…