簡體   English   中英

打字稿通用方法

[英]Typescript generic method

我對通用方法有疑問。 此方法不能在本機編譯:

export default function of<T>(support: Support<T>, invoke: Invoke<T>): Renderer<T> {
    return new Renderer<T>(support, invoke);
}

我有錯誤:

bundling failed: SyntaxError: /path/Renderer.tsx: Unexpected token, expected "(" (25:26)

> 25 | export default function of<T>(support: Support<T>, invoke: Invoke<T>): Renderer<T> {
     |                           ^
  26 |     return new Renderer(support, invoke);
  27 | }

package.json

  "dependencies": {
    "fast-csv": "^3.1.0",
    "react": "16.8.6",
    "react-native": "0.60.3",
    "react-native-fs": "^2.14.1"
  },
  "devDependencies": {
    "@babel/core": "^7.5.0",
    "@babel/runtime": "^7.5.0",
    "@react-native-community/eslint-config": "^0.0.3",
    "@types/node": "^12.6.8",
    "@types/react": "^16.8.23",
    "@types/react-native": "^0.60.0",
    "babel-jest": "^24.1.0",
    "jest": "^24.1.0",
    "metro-react-native-babel-preset": "^0.54.1",
    "react-native-typescript-transformer": "^1.2.12",
    "react-test-renderer": "16.8.6",
    "tslint": "^5.18.0",
    "tslint-eslint-rules": "^5.4.0",
    "tslint-react": "^4.0.0",
    "tslint-react-recommended": "^1.0.15",
    "typescript": "^3.5.3"
  },

tsconfig.js

"compilerOptions": {
    "baseUrl": "./src",                      
    "target": "es6",
    "module": "commonjs", 
    "jsx": "react", 
    "outDir": "./dist",
    "strict": true,
    "moduleResolution": "node", 
    "esModuleInterop": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true, 

如果您能指出我如何解決此問題,那就太好了。

Typescript 2.9增加了對tsx標簽明確指定type參數的支持

of ,則產生一個錯誤,因為類型不是一個對象。

你可以用這個

export default const OF = <T extends object>(support: Support<T>,invoke: Invoke<T> & { Renderer<T> } ) => {
    return new Renderer<T>(support, invoke);
}

暫無
暫無

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

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