JSPM

@mobilc/dota-types

7.38.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q33513F
  • License MIT

TypeScript definitions for Dota 2 API

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@mobilc/dota-types) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    Dota Lua Types

    TypeScript definitions for Dota 2 Lua API, designed to be used with TypeScriptToLua. npm标签 npm标签

    Installation

    Check out our addon template for usage examples.

    1. Get package from npm
    pnpm add -D @mobilc/dota-types
    # or
    npm install -D @mobilc/dota-types
    1. Modify your tsconfig.json
    {
      "compilerOptions": {
        "types": ["@mobilc/dota-types/vscripts"],
        "plugins": [{ "transform": "@mobilc/dota-types/transformer/vscripts" }]
      }
    }
    {
      "compilerOptions": {
        "types": ["@mobilc/dota-types/panorama"],
        "plugins": [{ "transform": "@mobilc/dota-types/transformer/panorama" }]
      }
    }
    {
      "compilerOptions": {
        "types": ["@mobilc/dota-types/share"]
      }
    }

    Enums

    This package includes 2 versions of enum types - raw and normalized. Raw types are included by default, with "types": ["@mobilc/dota-types/panorama"]. They are defined using original engine names and have no structural changes. They match actual values available at runtime,This makes the code using some enums compatible with Panorama however lead to repetition and require you to use inconsistent standard names.

    Normalized enum types can be included with "types": ["@mobilc/dota-types/panorama/normalized"] and require you to use @mobilc/dota-types/transformer/panorama (for example using ttypescript). With these types, enums have consistent names and have no repeated parts. For example, instead of EDOTA_ModifyGold_Reason.DOTA_ModifyGold_Unspecified you have to write ModifyGoldReason.UNSPECIFIED. instead of EDOTA_ModifyGold_Reason.DOTA_ModifyGold_Unspecified you have to write ModifyGoldReason.UNSPECIFIED.

    Both type versions define aliases for alternative names, so libraries created with one version would be compatible with a different one.

    Notes

    • You can explore the same data in readable form on Moddota API page.

    • To extend standard classes you can use declaration merging:

      interface CDOTA_BaseNPC {
        log(message: string): void;
      }
      
      CDOTA_BaseNPC.log = function (message) {
        print(`${this.GetUnitName()} says: ${message}`);
      };
      
      HeroList.GetHero(0)!.log('Hello world');
    • All Dota classes there are declared as interfaces. To extend them you can use utilities

      import { BaseAbility, BaseModifier, registerAbility, registerModifier } from './utils';
      
      @registerAbility('ability_test')
      export class Test extends BaseAbility {
        GetIntrinsicModifierName = () => TestModifier.name;
      }
      
      @registerModifier('ability_test_modifier')
      export class TestModifier extends BaseModifier {
        OnCreated() {
          print('Test modifier created');
        }
      }