我在Visual Studio中使用Typewriter扩展来生成模型(Account.ts),但是当我尝试在另一个类中导入模型时,它将失败。我在做什么错了?
import { Account } from '../../models/greencard/Account';
错误
'C:/Users/me/Desktop/_REPOS/stuff/ClientApp/src/app/models/greencard/Account.ts' is not a module.
打字机文件
${
// Enable extension methods by adding using Typewriter.Extensions.*
using Typewriter.Extensions.Types;
// Uncomment the constructor to change template settings.
//Template(Settings settings)
//{
// settings.IncludeProject("Project.Name");
// settings.OutputExtension = ".tsx";
//}
// Custom extension methods can be used in the template by adding a $ prefix e.g. $LoudName
string LoudName(Property property)
{
return property.Name.ToUpperInvariant();
}
}
module InvWebOps.EFModels.TypewriterTSTFiles {
templates e.g. $Properties[public $name: $Type][, ]
// More info: http://frhagn.github.io/Typewriter/
$Classes(Account)[
export class $Name {
$Properties[
// $LoudName
public $name: $Type = $Type[$Default];]
}]
}
自动生成的Account.ts
module InvWebOps.EFModels.TypewriterTSTFiles {
// More info: http://frhagn.github.io/Typewriter/
export class Account {
// ID
public id: number = 0;
......
答案 0 :(得分:1)
您可以通过using its namespace访问其他文件中的Account
类。
namespace InvWebOps.EFModels.TypewriterTSTFiles {
const account = new Account();
}
// the deprecated `module` keyword also works
module InvWebOps.EFModels.TypewriterTSTFiles {
const account = new Account();
}
// a fully qualified name also works
const account = new InvWebOps.EFModels.TypewriterTSTFiles.Account();
我在做什么错了?
关键字module
has been deprecated in favor of namespace
。这两个关键字含义相同,但是第二个关键字不那么令人困惑。官方TypeScript文档对命名空间说了这句话:
命名空间在全局命名空间中只是简单地命名为JavaScript对象。这使名称空间成为非常简单的构造。它们可以跨越多个文件... [和] ...是在Web应用程序中构建代码的好方法...
生成的Account
代码有两件事:
InvWebOps.EFModels.TypewriterTSTFiles
命名空间添加到全局范围。Account
类。从名称空间导出的所有内容只能在该名称空间内访问。因此,每当一行代码需要访问Account
类时,该行代码就需要使用Account
类的命名空间。简短的答案显示了三种实现方法。