【发布时间】:2020-04-16 08:49:08
【问题描述】:
我正在尝试类似的东西
import R from 'ramda'
import fs from 'fs'
import path from 'path'
import {promisify} from 'util'
const readFile = promisify(fs.readFile)
export async function discoverPackageInfo(): Promise<{
name: string,
version: string
description: string
}> {
return readFile(path.join(__dirname, '..', 'package.json'))
.then(b => b.toString())
.then(JSON.parse)
.then(R.pick([
'name',
'description',
'version',
]))
}
但我得到了
src/file.ts:13:3 - error TS2322: Type '{ name: string; version: string; description: string; } | Pick<any, never>' is not assignable to type '{ name: string; version: string; description: string; }'.
Type 'Pick<any, never>' is missing the following properties from type '{ name: string; version: string; description: string; }': name, version, description
13 return readFile(path.join(__dirname, '..', 'package.json'))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14 .then(b => b.toString())
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...
19 'version',
~~~~~~~~~~~~~~~~
20 ]))
~~~~~~~
我做错了什么?
【问题讨论】:
-
是的,我知道使用
async和.then不太合乎情理。 -
async在这里实际上是不必要的。没有它,代码也可以工作 -
正确。但是,我正在构建我的代码以在非 CPU 的任何东西上进行异步,以便强制正确地思考问题。最终成为结构和注释方面的练习,我发现它对我有很大帮助。
标签: typescript ramda.js