Использовать Typescript для вывода простого JS, а не модуля?

вы можете использовать метод shape.addpicture

activesheet.Shapes.AddPicture Filename:="C:\test\desert.jpg", linktofile:=msoFalse, _
            savewithdocument:=msoCTrue, Left:=0, Top:=0, Width:=100, Height:=100
3
задан Josh M. 20 March 2019 в 21:40
поделиться

1 ответ

Vanilla JavaScript

Всякий раз, когда вы используете import, он всегда будет преобразовываться в модуль. Однако вы можете использовать namespaces вместе с "module": "system", после чего его можно будет выводить в один файл (или несколько файлов).

Итак, для очень простого проекта у вас будет следующее:

tsconfig.json

{
  "compilerOptions": {
    "target": "es2016",
    "module": "system",
    "outFile": "./lib.js"
  },
  "include": [
    "./**/*.ts"
  ]
}

Затем вы создадите файлы, которые будут выглядеть следующим образом:

[ 1141] index.ts

namespace MyNamespace {
  // This is a private method that cannot be accessed in other files
  // the reason for that is because it isn't exported.
  function y() {
    alert("test");
  }

  x(y)
}

functions.ts

namespace MyNamespace {
  // This method can be referenced in other files because it is exported.
  export function x(callback: () => void): void {
    callback();
  }
}

Сгенерированный код браузера

var MyNamespace;
(function(MyNamespace) {
  function x(callback) {
    callback();
  }
  MyNamespace.x = x;
})(MyNamespace || (MyNamespace = {}));
var MyNamespace;
(function(MyNamespace) {
  function y() {
    alert("test");
  }
  MyNamespace.x(y);
})(MyNamespace || (MyNamespace = {}));
[1133 ]

Затем вы можете использовать эти методы / функции вне пространства имен, просто вызывая их через пространство имен:

MyNamespace.y()
MyNamespace.x(MyNamespace.y)
// etc.

Использование requirejs

Для использования import В рамках вашего проекта вам потребуется сторонняя библиотека requirejs . Это позволит вам использовать модули в браузере.

Итак, чтобы сделать это, нам сначала нужно иметь соответствующий конфигурационный файл, который выглядит примерно так, как показано выше, с единственным отличием - "module": "amd".

tsconfig.json

{
  "compilerOptions": {
    "target": "es2016",
    "module": "amd",
    "outFile": "./lib.js"
  },
  "include": [
    "./**/*.ts"
  ]
}

Далее нам нужно создать правильный основной файл машинописи:

index.ts

requirejs(['functions'], function (util: any) {
  function y() {
    alert("test");
  }

  util.x(y)
})

Поскольку используется третий партийная библиотека, она инициализируется по-разному (используя requirejs()). Это говорит requirejs, что это точка входа в приложение, поэтому это необходимо только один раз.

functions.ts

export function x(callback: () => void): void {
  callback();
}

Сгенерированный код браузера

define("functions", ["require", "exports"], function (require, exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    function x(callback) {
        callback();
    }
    exports.x = x;
});
requirejs(['functions'], function (util) {
    function y() {
        alert("test");
    }
    util.x(y);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.js"></script>

If ваш скрипт находится во внешнем файле, вы можете использовать data-main в теге скрипта, requirejs автоматически загрузит файл.

<script data-main="./lib" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.js"></script>

Экспериментальные модули

Эта функция все еще экспериментальная и поддерживается не во всех браузерах . Все, что вам нужно сделать, это использовать атрибут type="module" в вашем теге скрипта:

<script type="module" src="./path/to/main.js"></script>

tsconfig.json

Примечание: здесь мы используем оба разных target и module, а также outDir.
Примечание: es2016 не является допустимым типом модуля.

{
  "compilerOptions": {
    "target": "es2016",
    "module": "es2015",
    "outDir": "./lib"
  },
  "include": [
    "./**/*.ts"
  ]
}

index.ts

Примечание: import использует расширение .js, иначе браузер не сможет загрузить его, если у вас нет правил перезаписи.

]
import { x } from './functions.js'
function y() {
  alert("test");
}

x(y)

functions.ts

export function x(callback: () => void): void {
  callback();
}

Это выдаст почти то же самое, что и файлы ts (Stackoverflow не поддерживает внешние файлы js, если они не размещены где-то, поэтому здесь нет фрагмента): [ 1165]

// index.js
import { x } from './functions.js';
function y() {
    alert("test");
}
x(y);

// functions.js
export function x(callback) {
    callback();
}
0
ответ дан Get Off My Lawn 20 March 2019 в 21:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: