Как правильно использовать объекты вместо нескольких параметров?

#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. Да, спасибо, я понял. Не могли бы вы, пожалуйста, исправить этот код, заранее спасибо за это