簡體   English   中英

用於 JavaScript 減速器累加器的打字稿的 JSDoc 類型

[英]JSDoc typings for typescript for JavaScript reducer accumulator

我正在嘗試使用 JSDocs 在 JavaScript reducer鍵入累加器,但無法弄清楚如何執行此操作。

我試過在初始化時內聯輸入它,但這沒有用。 任何提示或想法? 這是示例代碼。 它抱怨傳遞給 arr.push() 的參數:

/**
* @type {Array<String>}
*/
const arr = ['one', 'two', 'three'];

/**
 * @type {Array<Array>}
 */
const result = arr.reduce((acc, item) => {
   if(item.length % 3 === 0) {
     // [ts] Argument of type '(string | number)[]' is not assignable to
     // parameter of type 'never'.
     acc.push([item, item.length]);
   }
   return acc;
}, []);

這是 GitHub 存儲庫,它在 tsc 設置的項目根目錄中有tsconfig.json文件: https : //github.com/guyellis/typescript-as-a-linter

這是我從中獲取上述代碼的那個 repo 中的文件: https : //github.com/guyellis/typescript-as-a-linter/blob/master/lib/reducer.js

您作為初始狀態傳遞的空數組的類型為never[] 有關更多背景信息,請參閱此線程 為了避免這種情況,你可以把它放在一個常量中並給常量一個類型:

/**
* @type {Array<String>}
*/
const arr = ['one', 'two', 'three'];

/** @type {Array<[string, number]>} */
const init = [];

/**
 * @type {Array<[string, number]>}
 */
const result = arr.reduce((acc, item) => {
   acc.push([item, item.length]);
   return acc;
}, init);
/**
 * @param {Pose['parameterValues']} values
 * @param {Pose['variants']} variants
*/
function getSrc (values, variants) {
  return values.reduce(
    /** @param {{[key: string]:Array<string>}} paths */
    (paths, { camera, light }, index) => {
      paths[light.name] = []
      for (let c = camera.start; c < camera.end; c += camera.increment) {
        paths[light.name].push(
          variants[index].replace('light', light.value).replace('camera', String(c))
        )
      }
      return paths
    }, {})
}

暫無
暫無

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

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