eolas/zk/Setup_configuration.md

108 lines
2.1 KiB
Markdown
Raw Normal View History

2022-04-23 13:26:53 +01:00
---
2022-09-06 15:44:40 +01:00
categories:
- Programming Languages
2022-04-23 13:26:53 +01:00
tags:
- typescript
---
2022-07-04 14:45:26 +01:00
# Setup and configuration
2022-04-23 13:26:53 +01:00
2022-07-04 14:45:26 +01:00
## Installation and configuration
2022-04-23 13:26:53 +01:00
TypeScript offers custom installations for most modern JS-based frameworks
including Webpack, React.js and Vue.js. The instructions below cover minimal TS
set-up outside of a specific framework. TypeScript adds an additional step to
any build process since your code must compile to JS before any bundling and
transpilation can occur.
2022-04-23 13:26:53 +01:00
## Installation
2022-07-04 14:45:26 +01:00
```
2022-04-23 13:26:53 +01:00
mkdir typescript-project
cd typescript-project
npm i typescript --save-dev
2022-07-04 14:45:26 +01:00
```
2022-04-23 13:26:53 +01:00
## Initialise project
2022-07-04 14:45:26 +01:00
```
2022-04-23 13:26:53 +01:00
npx tsc --init
2022-07-04 14:45:26 +01:00
```
2022-04-23 13:26:53 +01:00
## Basic configuration
2022-07-04 14:45:26 +01:00
```json
2022-04-23 13:26:53 +01:00
"compilerOptions": {
"target" : "es2020", //es2015 for prod
"module" : "es2020",
2022-07-04 14:45:26 +01:00
"allowJs": true,
"checkJs": true,
"strict": true,
"esModuleInterop": true
2022-04-23 13:26:53 +01:00
}
2022-07-04 14:45:26 +01:00
```
2022-04-23 13:26:53 +01:00
2022-07-04 14:45:26 +01:00
### Specify output paths (for production code)
2022-04-23 13:26:53 +01:00
2022-07-04 14:45:26 +01:00
```json
2022-04-23 13:26:53 +01:00
"compilerOptions": {
...
"outDir": "dist",
"sourceMap": true,
}
2022-07-04 14:45:26 +01:00
```
2022-04-23 13:26:53 +01:00
2022-07-04 14:45:26 +01:00
### Compile-time commands
2022-04-23 13:26:53 +01:00
2022-07-04 14:45:26 +01:00
```
tsc --noEmit
```
2022-04-23 13:26:53 +01:00
2022-07-04 14:45:26 +01:00
```
2022-04-23 13:26:53 +01:00
tsc --noEmit --watch
2022-07-04 14:45:26 +01:00
```
2022-04-23 13:26:53 +01:00
## Global requirements
2022-07-04 14:45:26 +01:00
```
2022-04-23 13:26:53 +01:00
npm install -g typescript
npm install -g ts-node
2022-07-04 14:45:26 +01:00
```
2022-04-23 13:26:53 +01:00
`ts-node` allows you to run TS files the way you would with standard JS, i.e.
`node [filename]`, you just use `ts-node filename` .
2022-04-23 13:26:53 +01:00
This is a convenience that saves you compiling from TS → JS and then running
Node against the compiled JS. Which is useful for debugging and checking values
as you work.
2022-04-23 13:26:53 +01:00
2022-07-04 14:45:26 +01:00
## Imports and exports
2022-04-23 13:26:53 +01:00
You may wish to define your custom types outside of their application, for
instance in a `/types/` directory. The custom type or types can then be imported
using standard ES6 imports:
2022-04-23 13:26:53 +01:00
2022-07-04 14:45:26 +01:00
```tsx
2022-04-23 13:26:53 +01:00
export type Article = {
2022-07-04 14:45:26 +01:00
title: string,
2022-04-23 13:26:53 +01:00
price: number,
}
export type AnotherType = {
...
}
2022-07-04 14:45:26 +01:00
```
2022-04-23 13:26:53 +01:00
2022-07-04 14:45:26 +01:00
```tsx
import { Article, AnotherType } from "./types/allTypes.js";
import Article from "./types/allTypes.js";
2022-07-04 14:45:26 +01:00
```
2022-04-23 13:26:53 +01:00
TypeScript also provides a specific import keyword `type` so that you can
distinguish type imports from other module imports. This is handy when you have
multiple components in the one file:
2022-04-23 13:26:53 +01:00
2022-07-04 14:45:26 +01:00
```tsx
import type { Article } from "./types/allTypes.js";
2022-07-04 14:45:26 +01:00
```