Требуемые аргументы компонента Ember

#javascript #ember.js

#javascript #ember.js

Вопрос:

Как я могу потребовать параметр в компоненте ember.

Например.:

 class MyComponent extends Component {
  get my_value() {
    return this.args.my_argument   1
  }
}
 

Я хочу, чтобы компонент выдавал ошибку при создании экземпляра компонента, а не при вызове функции.

Единственный способ, о котором я могу думать, это так:

 class MyComponent extends Component {
  constructor(owner, args) {
    super(owner, args)
    assert(!!args.my_argument, "MyComponent requires my_argument")
  }
  ...
}
 

Однако это кажется немного утомительным и выглядит неправильно :/

Редактировать:

Было бы еще лучше, если бы я мог указать тип аргумента.

Ответ №1:

Я бы сказал, что вы на правильном пути с вашим утверждением. Если вы хотите убедиться, что он имеет правильный тип, вы всегда можете утверждать с помощью typeof .

 class MyComponent extends Component {
  constructor(owner, args) {
    super(owner, args)
    assert("MyComponent requires my_argument", typeof args.my_argument === "string")
  }
  ...
}
 

Однако следует помнить, что утверждения доступны только во время сборок разработки, они удаляются из любых производственных сборок. Поэтому, если вам нужна эта проверка в вашей производственной сборке, вам придется написать свой собственный метод утверждения.

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

https://api.emberjs.com/ember/release/functions/@ember/debug/assert

Комментарии:

1. Я уже думал, что для этого нет удовлетворительного решения. Возможно, мне следует ввести typescript для решения этих ненужных ошибок. Конечно, имеет смысл иметь утверждения только в коде разработки 🙂