Regarding https://www.electronjs.org/blog/typescript, Electron now supports TypeScript, but it's not working on my setup:
I use vscode 1.16.1
Here is my package.json
{
[...]
"devDependencies": {
"electron": "^1.6.13",
"ts-loader": "~2.3.7",
"typescript": "~2.5.0",
"webpack": "^3.6.0",
[...]
}
}
tsconfig.json
{
"compilerOptions": {
"module": "es6",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true
},
"include": [
"src/**/*"
]
}
and my webpack
const path = require('path');
module.exports = [{
entry: './src/main.ts',
devtool: 'inline-source-map',
target: 'electron',
module: {
rules: [
{ test: /\.ts$/, use: 'ts-loader', exclude: /node_modules/ }
]
},
node: {
__dirname: false,
__filename: false
},
resolve: {
extensions: [".ts", ".js"]
},
output: {
filename: 'electron_core.js',
path: path.resolve(__dirname, 'dist')
}
}];
When I add at the top of my main.ts
///<reference path="../node_modules/electron/electron.d.ts" />
then it's ok and I don't have the error anymore. However, I would like to avoid referencing files like this as it seems it's useless with the latest version of TypeScript (see How do I import other TypeScript files?) and, moreover, in the Electron tutorial for TypeScript they don't need it ...)
Thanks
The problem seems to lie in the way tsc (and tsserver) resoves modules by default.
To use use node.js-like algorithm you need to add "moduleResolution": "node" to "compilerOptions" section of tsconfig.json.