From 8da8ac17fc01ed73bbbf0ca5c7eceb9f00f6dd24 Mon Sep 17 00:00:00 2001 From: Jan Klattenhoff Date: Wed, 6 Nov 2024 10:57:58 +0100 Subject: [PATCH] feat: Initial commit --- .gitignore | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 15 +++++ bun.lockb | Bin 0 -> 3125 bytes gold.ts | 7 ++ index.ts | 6 ++ item.ts | 7 ++ jewellery.ts | 11 ++++ package.json | 11 ++++ safe.ts | 33 ++++++++++ share.ts | 7 ++ tsconfig.json | 27 ++++++++ 11 files changed, 299 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100755 bun.lockb create mode 100644 gold.ts create mode 100644 index.ts create mode 100644 item.ts create mode 100644 jewellery.ts create mode 100644 package.json create mode 100644 safe.ts create mode 100644 share.ts create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9b1ee42 --- /dev/null +++ b/.gitignore @@ -0,0 +1,175 @@ +# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore + +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Caches + +.cache + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/README.md b/README.md new file mode 100644 index 0000000..283a210 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# typescript + +To install dependencies: + +```bash +bun install +``` + +To run: + +```bash +bun run index.ts +``` + +This project was created using `bun init` in bun v1.1.18. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime. diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..40293815e3a253c5e23ca24b65fa095a48083175 GIT binary patch literal 3125 zcmY#Z)GsYA(of3F(@)JSQ%EY!;{sycoc!eMw9K4T-L(9o+{6;yG6OCq1_p*q8@}Ed zO}3V|Ji18a@oP`~#fZw2XMRTOtt2XFpx27hYV$0aWY=)Xxf}rGOYj69ZuSHG!Ts z0qO_EFi0<{{?7#Jw}INv2Gq|?jO9=@AUA+8DBMB%Kx~j3Kzxu{AONC4eB^{ip1yzl z|3C&&69CO)WPq59Y&45jilK*uXoO~!tMnP6XftU}w7>DUDST|pbK*qe8yW+e8A%(_#u*otgoVZp67EWFyAJ!lemSOz% zsP!59hhNJ|R-3QbsQ4^ks^3`^{k<(SA}d*A^gC)cO;Y^+aKE=`+N-K1NaiA^YnDZa z?Hdz{AAREY@_7}@MWxe6U-hWf&#_axAaBiQee+gsS+4Aq>>o$8tE5>33v{Q4 zyngTE|0Rb@pkVKW2}tI`(izCvEN$jO*D~UFYwU>3=ZLy-{_U>AYjWr8Fw2{)bz`mC zx`lWeyh@BaL{8ffl70a&=hXmZ>!fX*k! zxdWwV1GFqU0;RcZii?u|tZdq!Po@+%(YEfQdPH;(4W?s6T zf*~RhEZ~7qQk)Dn^T2PBrA1RFh=3YoATj=Xi*4S?7Vau3E>0~1nihLmp)n}U`$sG= z5<%^v77Noej1_$Uen4F?7uo^?rU77h8{!P^lFEYA;^d;tf)WQXQy2|5Z{8PFJHt}Zy{O+ij0?2Pha mpziWwU2qD61PM6uAQ6T~KOzo*1|T><%gyw_=0H=~prZip7(Uqm literal 0 HcmV?d00001 diff --git a/gold.ts b/gold.ts new file mode 100644 index 0000000..d46d250 --- /dev/null +++ b/gold.ts @@ -0,0 +1,7 @@ +import { Item } from "./item"; + +export class Gold extends Item { + constructor(id: number, insuranceValue: number, public weight: number) { + super(id, insuranceValue); + } +} diff --git a/index.ts b/index.ts new file mode 100644 index 0000000..f28d513 --- /dev/null +++ b/index.ts @@ -0,0 +1,6 @@ +import { Item } from "./item"; + +let myItem = new Item(1, 1000); +console.log(myItem); +myItem.insuranceValue = 1500; +console.log(myItem); diff --git a/item.ts b/item.ts new file mode 100644 index 0000000..f9deb8f --- /dev/null +++ b/item.ts @@ -0,0 +1,7 @@ +export class Item { + constructor( + public id: number, + public insuranceValue: number, + ) { + } +} diff --git a/jewellery.ts b/jewellery.ts new file mode 100644 index 0000000..913ae10 --- /dev/null +++ b/jewellery.ts @@ -0,0 +1,11 @@ +import { Item } from "./item"; + +export class Jewellery extends Item { + constructor( + id: number, + insuranceValue: number, + public type: string, + ) { + super(id, insuranceValue); + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a21de7e --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "typescript", + "module": "index.ts", + "type": "module", + "devDependencies": { + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } +} \ No newline at end of file diff --git a/safe.ts b/safe.ts new file mode 100644 index 0000000..a39eca3 --- /dev/null +++ b/safe.ts @@ -0,0 +1,33 @@ +import { Item } from "./item"; + +export class safe { + constructor( + private items: Array, + ) { + this.items = []; + } + + addItem(item: Item): void { + this.items.push(item); + } + + takeOutItem(id: number): Item { + const item = this.items.filter(function (item) { + return id == item.id; + })[0]; + + this.items = this.items.filter(function (item) { + return id !== item.id; + }); + + return item; + } + + calculateInsuranceValueOfAllItems(): number { + return this.items.reduce((sum, item) => sum + item.insuranceValue, 0); + } + + getAllInsuranceValues(): number[] { + return this.items.map(item => item.insuranceValue); + } +} diff --git a/share.ts b/share.ts new file mode 100644 index 0000000..1356a2d --- /dev/null +++ b/share.ts @@ -0,0 +1,7 @@ +import { Item } from "./item"; + +export class Share extends Item { + constructor(id: number, insuranceValue: number, public company: string, public faceValue: number) { + super(id, insuranceValue); + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..238655f --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + // Enable latest features + "lib": ["ESNext", "DOM"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false + } +}