簡體   English   中英

Typescript 參數作為 object 傳遞時的構造函數簡寫

[英]Typescript constructor shorthand when parameters are passed as an object

我知道當我們以傳統方式傳遞參數時,我們可以簡化構造函數,例如

class Foo {
  
  private name: string;
  private age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age= age;
  }
}

所以這個 class 的等效簡寫構造函數符號將是

class Foo {
      constructor(private name: string, private age: number) {}
    }

同樣,當構造函數參數作為如下對象傳入時,我該如何做同樣的速記。

    class Foo {
      private name: string;
      private age: number;
      private group: string;
      constructor({
        name,
        age,
        group,
      }: {
        name: string;
        age: number;
        group: string;
      }) {
        this.name= name;
        this.age= age;
        this.group= group;
      }
   }

你可以這樣做:

  class Foo {
      constructor(public obj : { name: string, age: number, group: string}) {
      }
   }
  let foo = new Foo({name: 'name',  age: 42, group: 'answers'});

  alert(foo.obj.name);

PlaygroundLink

我不知道更短的方法。 如果您忽略構造函數並嘗試將 object 分配給三個變量nameagegroup ,那么這確實是一個關於如何在解構 object 時聲明類型的問題:

const { name, age, group } = {
  name: 'name',
  age: 42,
  group: 'answers',
};

TypeScript 沒有用於常規解構的特殊符號(許多先前答案博客文章最終使用與您相同的樣式),因此在 function 定義中沒有用於解構的符號。

通過將類型定義設為接口,您可以使代碼更簡潔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM