FreeBSD 14
Sponsored Link

Node.js + TypeScript2024/08/23

 

Configure TypeScript environment on Node.js.

[1]

Install Node.js, refer to here.

[2] Create a test project with TypeScript as a common user.
freebsd@dlp:~ $
mkdir testproject

freebsd@dlp:~ $
cd testproject
# generate package.json

freebsd@dlp:~/testproject $
npm init -y

Wrote to /home/freebsd/testproject/package.json:

{
  "name": "testproject",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": ""
}

# install TypeScript

freebsd@dlp:~/testproject $
npm install typescript ts-node


added 20 packages, and audited 21 packages in 3s

found 0 vulnerabilities

# install Node.js type declaration file

freebsd@dlp:~/testproject $
npm install @types/node


up to date, audited 21 packages in 368ms

found 0 vulnerabilities

# generate tsconfig.json

freebsd@dlp:~/testproject $
npx tsc --init --module commonjs


Created a new tsconfig.json with:

  target: es2016
  module: commonjs
  strict: true
  esModuleInterop: true
  skipLibCheck: true
  forceConsistentCasingInFileNames: true


You can learn more at https://aka.ms/tsconfig

# tsconfig.json has been generated like follows

freebsd@dlp:~/testproject $
grep -v -E "^ */|^$" tsconfig.json

{
  "compilerOptions": {
    "target": "es2016",                                  /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
    "module": "commonjs",                                /* Specify what module code is generated. */
    "esModuleInterop": true,                             /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
    "forceConsistentCasingInFileNames": true,            /* Ensure that casing is correct in imports. */
    "strict": true,                                      /* Enable all strict type-checking options. */
    "skipLibCheck": true                                 /* Skip type checking all .d.ts files. */
  }
}

# create a test app

freebsd@dlp:~/testproject $
mkdir src

freebsd@dlp:~/testproject $
vi src/test-app.ts
import * as http from "http";
import * as os from 'os';

const hostname = os.hostname();
const port = 3000;
const server = http.createServer((req, res) =>
  {
    res.write("Hello TypeScript World on Node.js!\n");
    res.end();
  }
);
server.listen(port);
console.log(`http://${hostname}:${port}`);

freebsd@dlp:~/testproject $
./node_modules/.bin/ts-node src/test-app.ts

http://dlp.srv.world:3000
  Access to the URL that is shown on the console above from any client computer, and then that's OK if following app is shown.
Matched Content