Значение по умолчанию для псевдонима машинописного типа

Может ли псевдоним машинописного типа поддерживать аргументы по умолчанию? Например:

export type SomeType = {
    typename: string;
    strength: number;
    radius: number;
    some_func: Function;
    some_other_stat: number = 8; // <-- This doesn't work
}

Ошибка A type literal property cannot have an initializer.

Я не могу найти документацию, относящуюся к этому - ключевое слово type очень неясно за всем остальным, что также называется типом. Могу ли я что-нибудь сделать, чтобы иметь значение аргумента по умолчанию для type в машинописном тексте?


person Rocky Li    schedule 18.05.2020    source источник


Ответы (2)


Вы не можете добавлять значения по умолчанию непосредственно в объявление типа.

Вместо этого вы можете сделать что-то вроде этого:

// Declare the type
export type SomeType = {
    typename: string;
    strength: number;
    radius: number;
    some_func: Function;
    some_other_stat: number;
}

// Create an object with all the necessary defaults
const defaultSomeType = {
    some_other_stat: 8
}

// Inject default values into your variable using spread operator.
const someTypeVariable: SomeType = {
  ...defaultSomeType,
  typename: 'name',
  strength: 5,
  radius: 2,
  some_func: () => {}
}
person Karthick Vinod    schedule 18.05.2020
comment
И как вы это делаете, когда someTypeVariable внедряется в функцию? - person Marcus; 11.07.2021

Тип не существует во время выполнения, поэтому значение по умолчанию не имеет смысла. Если вы хотите иметь значение по умолчанию по умолчанию, вы должны использовать что-то, что существует во время выполнения, например класс или фабричная функция.

person HTN    schedule 18.05.2020