Параметры функции могут быть подчеркнуты в TypeScript, если они не используются , чтобы избежать ошибки компиляции. _
name вводит в заблуждение, потому что оно не содержит информации и будет конфликтовать с другими именами свойств, если их больше. Поскольку свойства используются в качестве super
аргументов, подчеркивание не требуется.
never
не является правильным типом здесь, потому что это означает что-то еще, а не свойство, которое никогда не используется . Может конфликтовать с типами параметров родительского конструктора.
constructor(...args) {
super(...args);
// ...
}
будет правильным способом сделать это в JavaScript, но в TypeScript super
аргументы должны быть указаны явно, если они являются обязательными. Подобный явный конструктор может быть опущен, потому что это делается по умолчанию, если не указан constructor
.
Явный конструктор редко необходим в компонентах React. Единственное действующее свойство super
- props
. Большая часть кода инициализации направляется на хуки жизненного цикла компонентов (исключено componentWillMount
- единственное исключение), а свойства экземпляра могут быть объявлены как поля класса в TypeScript:
class SomeComponent extends React.Component {
state = {
foo: synchronousInitialization();
};
// isn't needed
/*
constructor(props) {
super(props);
}
*/
async componentDidMount() {
const bar = await asynchronousInitialization();
this.setState({ ...this.state, bar });
}
...
}