例如
IList<Payments> newPayments = activityViewModel.Payments.Select(p => mapper.Map<PaymentViewModel, Payments>(p)).ToList();
foreach (var payments in newPayments)
{
ctx.Entry(payments).State = payments.ID == 0 ? EntityState.Added : EntityState.Modified;
ctx.Payments.Add(payments);
}
ctx.SaveChanges();
如果我从该软件包中导入某些内容,如
yarn add http-status-codes
Typescript抱怨“找不到模块http-status-codes”。 但是 http状态代码已经提供了自己的import { BAD_GATEWAY } from 'http-status-codes';
类型定义文件。
出于某种原因,该行为仅可使用“ target”:“ es6”或更高版本进行复制(index.d.ts
出于某种原因没有问题)。
为什么我不能使用可用的打字文件?这不是现代包装应该像开箱即用那样工作的方式,又不需要额外的"es5"
吗? (实际上并不存在)。从包含其类型定义的包中导入,我该怎么做?为什么这不是默认设置?
答案 0 :(得分:1)
如果您指定es6
,则该模块系统将默认为该版本的ES的本机模块系统(ES2015
模块系统)。从documentation:
有两种可能的模块解析策略:Node和Classic。您可以使用--moduleResolution标志来指定模块解析策略。如果未指定,则默认值为--module AMD | Classic。系统| ES2015或Node。
您可以阅读文档以获取更多信息,但是clasic
的解决方案策略并未使用node_modules
来查找定义,而node
则模仿了节点查找模块的方式(在{ {1}})。
您需要将node_modules
选项添加到tsconfig.json
中:
moduleResolution
这对{
"compilerOptions": {
"moduleResolution": "node",
"target": "es6",
}
}
有用,因为对于es5
,模块系统默认为es5
(see docs),默认情况下使用节点解析。