代码之家  ›  专栏  ›  技术社区  ›  Rilcon42

打字机生成的TS文件不是模块

  •  0
  • Rilcon42  · 技术社区  · 5 年前

    我在Visual Studio中使用了打字机扩展来生成模型(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];]
        }]
    }
    

    自动生成的帐户.ts

    module InvWebOps.EFModels.TypewriterTSTFiles {
    
        // More info: http://frhagn.github.io/Typewriter/
    
    
        export class Account {
    
            // ID
            public id: number = 0;
         ......
    
    0 回复  |  直到 5 年前
        1
  •  1
  •   Shaun Luttin    5 年前

    您可以访问 Account 通过在其他文件中初始化 using its namespace

    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文档对名称空间这样说:

    生成的 代码做两件事:

    1. 添加 InvWebOps.EFModels.TypewriterTSTFiles 命名空间到全局范围。
    2. 账户 从该命名空间初始化。

    账户 账户