typescript - 如何在 nextjs 项目中使用 ts-transformer-keys?
问题描述
我想从接口获取键作为字符串数组,以便我可以迭代它们。在stackoverflow上我发现我需要使用一个库'ts-transformer-keys'。因为在 nextjs 项目中,我们同时拥有 webpack 和 typescript,所以我为下面链接中提到的 ttypescript 和 webpack 添加了 webpack 和 tsconfig.json 的配置。
https://github.com/iqraabdulrauf/ts-transformer-keys/blob/master/README.md
问题是项目没有被两个加载器编译为'ts-loader'和'awesome-typescript-loader'。它不会拾取nextjs项目中存在的pages文件夹下的_document.tsx文件。
解决方案
观看ts-patch , ts-transformer-keys
// tsconfig.json
{
"compilerOptions": {
// ...
"plugins": [
{ "transform": "ts-transformer-keys/transformer" }
]
},
// ...
}
UPD
如果上限不起作用,请设置next.config.js
:
const keysTransformer = require('ts-transformer-keys/transformer').default;
const enumerateTransformer = require('ts-transformer-enumerate/transformer').default;
const isTransformer = require('typescript-is/lib/transform-inline/transformer').default;
const { PHASE_DEVELOPMENT_SERVER } = require('next/constants');
module.exports = (phase, { defaultConfig }) => {
const config = {
webpack: (config, options) => {
config.module.rules.push({
test: /\.ts$/,
loader: 'ts-loader', // or 'next-babel-loader'
options: {
// make sure not to set `transpileOnly: true` here, otherwise it will not work
getCustomTransformers: program => ({
before: [
keysTransformer(program),
enumerateTransformer(program),
isTransformer(program)
]
})
}
});
return config
},
};
if (phase === PHASE_DEVELOPMENT_SERVER) {
// ...
}
return Object.assign (config, {
// constants to process.env.
});
};
ts-loader
如果未安装,请安装。你也可以使用next-babel-loader
.
推荐阅读
- python - Space Invaders:高分 KeyErrors
- haskell - 元组模式匹配 (v,w) = someFunction param_1 param_2 是如何工作的?
- google-apps-script - 返回信息到卡
- php - 在提交注册表单时向用户发送邮件
- flutter - Flutter中使用CircleAvatar时如何调整图片
- bash - 如何通过 terraform 停止/开始运行 ec2 实例
- java - 为什么 JVM 不能将 byteArray 转换为 String 并重新转换为 byteArray
- python - 在 Python 中从 for 转换为 while 循环
- java - CarouselView 中的卡片?
- amazon-web-services - Openshift 将图像复制到另一个图像存储库