#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 для решения этих ненужных ошибок. Конечно, имеет смысл иметь утверждения только в коде разработки 🙂