2017-05-03 34 views
0

如何定義類級別常量並在靜態&實例方法中訪問它?如何在ES6類中定義類級別常量

class ExternalRequests{ 

     const HEADERS = { "Accept": "application/json, text/plain", "Content-Type": "application/json", "Access-Control-Allow-Origin": "*"} 


     static get(url){ 
     return fetch(url, {method: 'get', HEADERS}) 
     .catch(_ => { 
      throw new Error("network error"); 
     }) 
     .then(response => { 
      if (!response.ok) { 
      throw new Error(response.statusText); 
      } 
      return response.json(); 
     }); 
     } 

     static post(url, data){ 
     return fetch(url, {method: 'post', HEADERS, body: data}) 
     .catch(_ => { 
      throw new Error("network error"); 
     }) 
     .then(response => { 
      if (!response.ok) { 
      throw new Error(response.statusText); 
      } 
      return response.json(); 
     }); 
     } 

    static put(url, data){ 
     return fetch(url, {method: 'put', HEADERS, body: data}) 
     .catch(_ => { 
      throw new Error("network error"); 
     }) 
     .then(response => { 
      if (!response.ok) { 
      throw new Error(response.statusText); 
      } 
      return response.json(); 
     }); 
     } 

     static delete(){ 
     return fetch(url, {method: 'delete', HEADERS}) 
     .catch(_ => { 
      throw new Error("network error"); 
     }) 
     .then(response => { 
      if (!response.ok) { 
      throw new Error(response.statusText); 
      } 
      return response.json(); 
     }); 
     } 

    } 

    export default ExternalRequests; 

錯誤

ERROR in ./externalRequests.js 
Module build failed: SyntaxError: Unexpected token (3:8) 

    1 | class ExternalRequests{ 
    2 | 
> 3 | const HEADERS = { "Accept": "application/json, text/plain", "Content-Type": "application/json", "Access-Control-Allow-Origin": "*"} 
+0

如果你班上的每種方法都是'靜態',那麼你不想要或不需要一個類,你只需要一個對象。如果你只是導出一個默認對象,你實際需要的是一堆命名導出。 – loganfsmyth

回答

0

改變它也可以是static get訪問。然後您可以從其他靜態方法以this.HEADERS的身份訪問它。 (可惜這是我們得到的,直到JS獲取類屬性是最好的)

class ExternalRequests{ 
    static get HEADERS() { 
    return { 
     "Accept": "application/json, text/plain", 
     "Content-Type": "application/json", 
     "Access-Control-Allow-Origin": "*" 
    } 
    } 

    static get(url){ 
    return fetch(url, {method: 'get', this.HEADERS}) 
    } 
/* rest of the class ... */ 

如果您現在就想使用類的屬性,你可以使用babel-transform-class-properties,這樣可以讓你做的事:

class ExternalRequests { 
    static HEADERS = /* ... your headers */ 
    /* ...rest of the class... */