#javascript #typescript #class #object
#javascript #typescript #класс #объект
Вопрос:
Как правильно использовать объекты вместо нескольких параметров в моем случае?
class Test{
async createUser(
url: string,
name: string,
email: string,
phone: string,
street: string,
...
) {
await Page.setUrl(url);
await Page.setEmail(email);
...
}
}
Комментарии:
1. @AbdennourTOUMI хотя я могу согласиться, я не уверен, как это помогает.
2. Я тоже надеюсь!
Ответ №1:
вы можете использовать интерфейс
interface User {
url: string;
name: string;
email: string;
phone: string;
street: string;
}
class Test{
async createUser(user: User) {
await Page.setUrl(user.url);
await Page.setEmail(user.email);
...
}
}
Комментарии:
1. В TS
interface
ключевое слово всегда со строчной буквыi
Ответ №2:
используйте концепцию операторов распространения. Узнайте больше об этом здесь:
создайте объектную переменную следующим образом:
result = {
url: string,
name: string,
email: string,
phone: string,
street: string,
}
а затем передайте его в качестве параметра следующим образом
async createUser (...result){
//get variable you wan to use
const {url, name, email} = resu<
//your code here
}
Комментарии:
1. Ваша сигнатура метода CreateUser имеет нулевую безопасность типов и противоречит цели использования Typescript.
2. да, я это знаю. но я думаю, что весь вопрос был в использовании объектов вместо нескольких параметров
3. (1) у origin
createUser
был фиксированный набор строго типизированных именованных параметров, но ваш с его единственным параметром rest принимает неограниченное количествоany
значений. (2) деструктурированиеresult
нарушено, потому что вы не можете деструктурировать типany[]
в именованные переменные.4. Да, спасибо, я понял. Не могли бы вы, пожалуйста, исправить этот код, заранее спасибо за это