Giter VIP home page Giter VIP logo

tasty-typescript's Introduction

Tasty TypeScript!

The starter files for the Tasty TypeScript course.

npm i && npm start

tasty-typescript's People

Contributors

wesbos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tasty-typescript's Issues

Video 39

There are 2 folders related to the dad-jokes exercise in the exercises folder. The dad-jokes contains the solution code and the dad-jokes-start contains the starter files.

This should be removed as it's a duplicate solution.
https://github.com/wesbos/Tasty-TypeScript/tree/main/exercises/dad-jokes


There is already a dad-jokes in the finished-exercises folder but it's jokes.ts file is shorter (62 lines) than the completed file (78 lines) so that should be corrected.

Video #1

Hey Wes,

After installing and starting the Vite server I run into this error. This seems to be related to the packages being imported in the folders finished-files/hotdog and exercises/hotdog. The exercises/hotdog seems to be a duplicate of the finished version that is in the starter exercise folder.

The starter folder exercises/hotdog-start doesn't throw an issue but I suspect that is just because nothing is being imported.

> [email protected] start
> vite


  VITE v3.2.2  ready in 123 ms

  ➜  Local:   http://localhost:7777/
  ➜  Network: http://172.30.49.117:7777/
✘ [ERROR] Could not resolve "@tensorflow/tfjs-converter"

    node_modules/@tensorflow-models/coco-ssd/dist/coco-ssd.es2017.esm.min.js:17:86:
      17 │ ..."object"==typeof exports&&"undefined"!=typeof module?a(exports,require("@tensorflow/tfjs-converter"),require("@tensorflow/tfjs-core")):"function"==typeof define&&define.a...
         ╵                                                                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  You can mark the path "@tensorflow/tfjs-converter" as external to exclude it from the bundle,
  which will remove this error. You can also surround this "require" call with a try/catch block to
  handle this failure at run-time instead of bundle-time.

✘ [ERROR] Could not resolve "@tensorflow/tfjs-core"

    node_modules/@tensorflow-models/coco-ssd/dist/coco-ssd.es2017.esm.min.js:17:124:
      17 │ ...d"!=typeof module?a(exports,require("@tensorflow/tfjs-converter"),require("@tensorflow/tfjs-core")):"function"==typeof define&&define.amd?define(["exports","@tensorflow/t...
         ╵                                                                              ~~~~~~~~~~~~~~~~~~~~~~~

  You can mark the path "@tensorflow/tfjs-core" as external to exclude it from the bundle, which
  will remove this error. You can also surround this "require" call with a try/catch block to handle
  this failure at run-time instead of bundle-time.

/home/asjas/git/Tasty-TypeScript/node_modules/esbuild/lib/main.js:1566
  let error = new Error(`${text}${summary}`);
              ^

Error: Build failed with 2 errors:
node_modules/@tensorflow-models/coco-ssd/dist/coco-ssd.es2017.esm.min.js:17:86: ERROR: Could not resolve "@tensorflow/tfjs-converter"
node_modules/@tensorflow-models/coco-ssd/dist/coco-ssd.es2017.esm.min.js:17:124: ERROR: Could not resolve "@tensorflow/tfjs-core"
    at failureErrorWithLog (/home/asjas/git/Tasty-TypeScript/node_modules/esbuild/lib/main.js:1566:15)
    at /home/asjas/git/Tasty-TypeScript/node_modules/esbuild/lib/main.js:1024:28
    at runOnEndCallbacks (/home/asjas/git/Tasty-TypeScript/node_modules/esbuild/lib/main.js:1438:61)
    at buildResponseToResult (/home/asjas/git/Tasty-TypeScript/node_modules/esbuild/lib/main.js:1022:7)
    at /home/asjas/git/Tasty-TypeScript/node_modules/esbuild/lib/main.js:1134:14
    at responseCallbacks.<computed> (/home/asjas/git/Tasty-TypeScript/node_modules/esbuild/lib/main.js:671:9)
    at handleIncomingPacket (/home/asjas/git/Tasty-TypeScript/node_modules/esbuild/lib/main.js:726:9)
    at Socket.readFromStdout (/home/asjas/git/Tasty-TypeScript/node_modules/esbuild/lib/main.js:647:7)
    at Socket.emit (node:events:517:28)
    at addChunk (node:internal/streams/readable:368:12) {
  errors: [
    {
      detail: undefined,
      id: '',
      location: {
        column: 86,
        file: 'node_modules/@tensorflow-models/coco-ssd/dist/coco-ssd.es2017.esm.min.js',
        length: 28,
        line: 17,
        lineText: '!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?a(exports,require("@tensorflow/tfjs-converter"),require("@tensorflow/tfjs-core")):"function"==typeof define&&define.amd?define(["exports","@tensorflow/tfjs-converter","@tensorflow/tfjs-core"],a):a((e=e||self).cocoSsd=e.cocoSsd||{},e.tf,e.tf)}(this,(function(e,a,m){"use strict";const i={1:{name:"/m/01g317",id:1,displayName:"person"},2:{name:"/m/0199g",id:2,displayName:"bicycle"},3:{name:"/m/0k4j",id:3,displayName:"car"},4:{name:"/m/04_sv",id:4,displayName:"motorcycle"},5:{name:"/m/05czz6l",id:5,displayName:"airplane"},6:{name:"/m/01bjv",id:6,displayName:"bus"},7:{name:"/m/07jdr",id:7,displayName:"train"},8:{name:"/m/07r04",id:8,displayName:"truck"},9:{name:"/m/019jd",id:9,displayName:"boat"},10:{name:"/m/015qff",id:10,displayName:"traffic light"},11:{name:"/m/01pns0",id:11,displayName:"fire hydrant"},13:{name:"/m/02pv19",id:13,displayName:"stop sign"},14:{name:"/m/015qbp",id:14,displayName:"parking meter"},15:{name:"/m/0cvnqh",id:15,displayName:"bench"},16:{name:"/m/015p6",id:16,displayName:"bird"},17:{name:"/m/01yrx",id:17,displayName:"cat"},18:{name:"/m/0bt9lr",id:18,displayName:"dog"},19:{name:"/m/03k3r",id:19,displayName:"horse"},20:{name:"/m/07bgp",id:20,displayName:"sheep"},21:{name:"/m/01xq0k1",id:21,displayName:"cow"},22:{name:"/m/0bwd_0j",id:22,displayName:"elephant"},23:{name:"/m/01dws",id:23,displayName:"bear"},24:{name:"/m/0898b",id:24,displayName:"zebra"},25:{name:"/m/03bk1",id:25,displayName:"giraffe"},27:{name:"/m/01940j",id:27,displayName:"backpack"},28:{name:"/m/0hnnb",id:28,displayName:"umbrella"},31:{name:"/m/080hkjn",id:31,displayName:"handbag"},32:{name:"/m/01rkbr",id:32,displayName:"tie"},33:{name:"/m/01s55n",id:33,displayName:"suitcase"},34:{name:"/m/02wmf",id:34,displayName:"frisbee"},35:{name:"/m/071p9",id:35,displayName:"skis"},36:{name:"/m/06__v",id:36,displayName:"snowboard"},37:{name:"/m/018xm",id:37,displayName:"sports ball"},38:{name:"/m/02zt3",id:38,displayName:"kite"},39:{name:"/m/03g8mr",id:39,displayName:"baseball bat"},40:{name:"/m/03grzl",id:40,displayName:"baseball glove"},41:{name:"/m/06_fw",id:41,displayName:"skateboard"},42:{name:"/m/019w40",id:42,displayName:"surfboard"},43:{name:"/m/0dv9c",id:43,displayName:"tennis racket"},44:{name:"/m/04dr76w",id:44,displayName:"bottle"},46:{name:"/m/09tvcd",id:46,displayName:"wine glass"},47:{name:"/m/08gqpm",id:47,displayName:"cup"},48:{name:"/m/0dt3t",id:48,displayName:"fork"},49:{name:"/m/04ctx",id:49,displayName:"knife"},50:{name:"/m/0cmx8",id:50,displayName:"spoon"},51:{name:"/m/04kkgm",id:51,displayName:"bowl"},52:{name:"/m/09qck",id:52,displayName:"banana"},53:{name:"/m/014j1m",id:53,displayName:"apple"},54:{name:"/m/0l515",id:54,displayName:"sandwich"},55:{name:"/m/0cyhj_",id:55,displayName:"orange"},56:{name:"/m/0hkxq",id:56,displayName:"broccoli"},57:{name:"/m/0fj52s",id:57,displayName:"carrot"},58:{name:"/m/01b9xk",id:58,displayName:"hot dog"},59:{name:"/m/0663v",id:59,displayName:"pizza"},60:{name:"/m/0jy4k",id:60,displayName:"donut"},61:{name:"/m/0fszt",id:61,displayName:"cake"},62:{name:"/m/01mzpv",id:62,displayName:"chair"},63:{name:"/m/02crq1",id:63,displayName:"couch"},64:{name:"/m/03fp41",id:64,displayName:"potted plant"},65:{name:"/m/03ssj5",id:65,displayName:"bed"},67:{name:"/m/04bcr3",id:67,displayName:"dining table"},70:{name:"/m/09g1w",id:70,displayName:"toilet"},72:{name:"/m/07c52",id:72,displayName:"tv"},73:{name:"/m/01c648",id:73,displayName:"laptop"},74:{name:"/m/020lf",id:74,displayName:"mouse"},75:{name:"/m/0qjjc",id:75,displayName:"remote"},76:{name:"/m/01m2v",id:76,displayName:"keyboard"},77:{name:"/m/050k8",id:77,displayName:"cell phone"},78:{name:"/m/0fx9l",id:78,displayName:"microwave"},79:{name:"/m/029bxz",id:79,displayName:"oven"},80:{name:"/m/01k6s3",id:80,displayName:"toaster"},81:{name:"/m/0130jx",id:81,displayName:"sink"},82:{name:"/m/040b_t",id:82,displayName:"refrigerator"},84:{name:"/m/0bt_c3",id:84,displayName:"book"},85:{name:"/m/01x3z",id:85,displayName:"clock"},86:{name:"/m/02s195",id:86,displayName:"vase"},87:{name:"/m/01lsmm",id:87,displayName:"scissors"},88:{name:"/m/0kmg4",id:88,displayName:"teddy bear"},89:{name:"/m/03wvsk",id:89,displayName:"hair drier"},90:{name:"/m/012xff",id:90,displayName:"toothbrush"}};class d{constructor(e,a){this.modelPath=a||`https://storage.googleapis.com/tfjs-models/savedmodel/${this.getPrefix(e)}/model.json`}getPrefix(e){return"lite_mobilenet_v2"===e?`ssd${e}`:`ssd_${e}`}async load(){this.model=await a.loadGraphModel(this.modelPath);const e=m.zeros([1,300,300,3],"int32"),i=await this.model.executeAsync(e);await Promise.all(i.map((e=>e.data()))),i.map((e=>e.dispose())),e.dispose()}async infer(e,a,i){const d=m.tidy((()=>(e instanceof m.Tensor||(e=m.browser.fromPixels(e)),m.expandDims(e)))),s=d.shape[1],n=d.shape[2],l=await this.model.executeAsync(d),t=l[0].dataSync(),o=l[1].dataSync();d.dispose(),m.dispose(l);const[p,r]=this.calculateMaxScores(t,l[0].shape[1],l[0].shape[2]),c=m.getBackend();"webgl"===m.getBackend()&&m.setBackend("cpu");const y=m.tidy((()=>{const e=m.tensor2d(o,[l[1].shape[1],l[1].shape[3]]);return m.image.nonMaxSuppression(e,p,a,i,i)})),N=y.dataSync();return y.dispose(),c!==m.getBackend()&&m.setBackend(c),this.buildDetectedObjects(n,s,o,p,N,r)}buildDetectedObjects(e,a,m,d,s,n){const l=s.length,t=[];for(let o=0;o<l;o++){const l=[];for(let e=0;e<4;e++)l[e]=m[4*s[o]+e];const p=l[0]*a,r=l[1]*e,c=l[2]*a,y=l[3]*e;l[0]=r,l[1]=p,l[2]=y-r,l[3]=c-p,t.push({bbox:l,class:i[n[s[o]]+1].displayName,score:d[s[o]]})}return t}calculateMaxScores(e,a,m){const i=[],d=[];for(let s=0;s<a;s++){let a=Number.MIN_VALUE,n=-1;for(let i=0;i<m;i++)e[s*m+i]>a&&(a=e[s*m+i],n=i);i[s]=a,d[s]=n}return[i,d]}async detect(e,a=20,m=.5){return this.infer(e,a,m)}dispose(){null!=this.model&&this.model.dispose()}}e.ObjectDetection=d,e.load=async function(e={}){if(null==m)throw new Error("Cannot find TensorFlow.js. If you are using a <script> tag, please also include @tensorflow/tfjs on the page before using this model.");const a=e.base||"lite_mobilenet_v2",i=e.modelUrl;if(-1===["mobilenet_v1","mobilenet_v2","lite_mobilenet_v2"].indexOf(a))throw new Error(`ObjectDetection constructed with invalid base model ${a}. Valid names are \'mobilenet_v1\', \'mobilenet_v2\' and \'lite_mobilenet_v2\'.`);const s=new d(a,i);return await s.load(),s},e.version="2.2.3",Object.defineProperty(e,"__esModule",{value:!0})}));',
        namespace: '',
        suggestion: ''
      },
      notes: [
        {
          location: null,
          text: 'You can mark the path "@tensorflow/tfjs-converter" as external to exclude it from the bundle, which will remove this error. You can also surround this "require" call with a try/catch block to handle this failure at run-time instead of bundle-time.'
        }
      ],
      pluginName: '',
      text: 'Could not resolve "@tensorflow/tfjs-converter"'
    },
    {
      detail: undefined,
      id: '',
      location: {
        column: 124,
        file: 'node_modules/@tensorflow-models/coco-ssd/dist/coco-ssd.es2017.esm.min.js',
        length: 23,
        line: 17,
        lineText: '!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?a(exports,require("@tensorflow/tfjs-converter"),require("@tensorflow/tfjs-core")):"function"==typeof define&&define.amd?define(["exports","@tensorflow/tfjs-converter","@tensorflow/tfjs-core"],a):a((e=e||self).cocoSsd=e.cocoSsd||{},e.tf,e.tf)}(this,(function(e,a,m){"use strict";const i={1:{name:"/m/01g317",id:1,displayName:"person"},2:{name:"/m/0199g",id:2,displayName:"bicycle"},3:{name:"/m/0k4j",id:3,displayName:"car"},4:{name:"/m/04_sv",id:4,displayName:"motorcycle"},5:{name:"/m/05czz6l",id:5,displayName:"airplane"},6:{name:"/m/01bjv",id:6,displayName:"bus"},7:{name:"/m/07jdr",id:7,displayName:"train"},8:{name:"/m/07r04",id:8,displayName:"truck"},9:{name:"/m/019jd",id:9,displayName:"boat"},10:{name:"/m/015qff",id:10,displayName:"traffic light"},11:{name:"/m/01pns0",id:11,displayName:"fire hydrant"},13:{name:"/m/02pv19",id:13,displayName:"stop sign"},14:{name:"/m/015qbp",id:14,displayName:"parking meter"},15:{name:"/m/0cvnqh",id:15,displayName:"bench"},16:{name:"/m/015p6",id:16,displayName:"bird"},17:{name:"/m/01yrx",id:17,displayName:"cat"},18:{name:"/m/0bt9lr",id:18,displayName:"dog"},19:{name:"/m/03k3r",id:19,displayName:"horse"},20:{name:"/m/07bgp",id:20,displayName:"sheep"},21:{name:"/m/01xq0k1",id:21,displayName:"cow"},22:{name:"/m/0bwd_0j",id:22,displayName:"elephant"},23:{name:"/m/01dws",id:23,displayName:"bear"},24:{name:"/m/0898b",id:24,displayName:"zebra"},25:{name:"/m/03bk1",id:25,displayName:"giraffe"},27:{name:"/m/01940j",id:27,displayName:"backpack"},28:{name:"/m/0hnnb",id:28,displayName:"umbrella"},31:{name:"/m/080hkjn",id:31,displayName:"handbag"},32:{name:"/m/01rkbr",id:32,displayName:"tie"},33:{name:"/m/01s55n",id:33,displayName:"suitcase"},34:{name:"/m/02wmf",id:34,displayName:"frisbee"},35:{name:"/m/071p9",id:35,displayName:"skis"},36:{name:"/m/06__v",id:36,displayName:"snowboard"},37:{name:"/m/018xm",id:37,displayName:"sports ball"},38:{name:"/m/02zt3",id:38,displayName:"kite"},39:{name:"/m/03g8mr",id:39,displayName:"baseball bat"},40:{name:"/m/03grzl",id:40,displayName:"baseball glove"},41:{name:"/m/06_fw",id:41,displayName:"skateboard"},42:{name:"/m/019w40",id:42,displayName:"surfboard"},43:{name:"/m/0dv9c",id:43,displayName:"tennis racket"},44:{name:"/m/04dr76w",id:44,displayName:"bottle"},46:{name:"/m/09tvcd",id:46,displayName:"wine glass"},47:{name:"/m/08gqpm",id:47,displayName:"cup"},48:{name:"/m/0dt3t",id:48,displayName:"fork"},49:{name:"/m/04ctx",id:49,displayName:"knife"},50:{name:"/m/0cmx8",id:50,displayName:"spoon"},51:{name:"/m/04kkgm",id:51,displayName:"bowl"},52:{name:"/m/09qck",id:52,displayName:"banana"},53:{name:"/m/014j1m",id:53,displayName:"apple"},54:{name:"/m/0l515",id:54,displayName:"sandwich"},55:{name:"/m/0cyhj_",id:55,displayName:"orange"},56:{name:"/m/0hkxq",id:56,displayName:"broccoli"},57:{name:"/m/0fj52s",id:57,displayName:"carrot"},58:{name:"/m/01b9xk",id:58,displayName:"hot dog"},59:{name:"/m/0663v",id:59,displayName:"pizza"},60:{name:"/m/0jy4k",id:60,displayName:"donut"},61:{name:"/m/0fszt",id:61,displayName:"cake"},62:{name:"/m/01mzpv",id:62,displayName:"chair"},63:{name:"/m/02crq1",id:63,displayName:"couch"},64:{name:"/m/03fp41",id:64,displayName:"potted plant"},65:{name:"/m/03ssj5",id:65,displayName:"bed"},67:{name:"/m/04bcr3",id:67,displayName:"dining table"},70:{name:"/m/09g1w",id:70,displayName:"toilet"},72:{name:"/m/07c52",id:72,displayName:"tv"},73:{name:"/m/01c648",id:73,displayName:"laptop"},74:{name:"/m/020lf",id:74,displayName:"mouse"},75:{name:"/m/0qjjc",id:75,displayName:"remote"},76:{name:"/m/01m2v",id:76,displayName:"keyboard"},77:{name:"/m/050k8",id:77,displayName:"cell phone"},78:{name:"/m/0fx9l",id:78,displayName:"microwave"},79:{name:"/m/029bxz",id:79,displayName:"oven"},80:{name:"/m/01k6s3",id:80,displayName:"toaster"},81:{name:"/m/0130jx",id:81,displayName:"sink"},82:{name:"/m/040b_t",id:82,displayName:"refrigerator"},84:{name:"/m/0bt_c3",id:84,displayName:"book"},85:{name:"/m/01x3z",id:85,displayName:"clock"},86:{name:"/m/02s195",id:86,displayName:"vase"},87:{name:"/m/01lsmm",id:87,displayName:"scissors"},88:{name:"/m/0kmg4",id:88,displayName:"teddy bear"},89:{name:"/m/03wvsk",id:89,displayName:"hair drier"},90:{name:"/m/012xff",id:90,displayName:"toothbrush"}};class d{constructor(e,a){this.modelPath=a||`https://storage.googleapis.com/tfjs-models/savedmodel/${this.getPrefix(e)}/model.json`}getPrefix(e){return"lite_mobilenet_v2"===e?`ssd${e}`:`ssd_${e}`}async load(){this.model=await a.loadGraphModel(this.modelPath);const e=m.zeros([1,300,300,3],"int32"),i=await this.model.executeAsync(e);await Promise.all(i.map((e=>e.data()))),i.map((e=>e.dispose())),e.dispose()}async infer(e,a,i){const d=m.tidy((()=>(e instanceof m.Tensor||(e=m.browser.fromPixels(e)),m.expandDims(e)))),s=d.shape[1],n=d.shape[2],l=await this.model.executeAsync(d),t=l[0].dataSync(),o=l[1].dataSync();d.dispose(),m.dispose(l);const[p,r]=this.calculateMaxScores(t,l[0].shape[1],l[0].shape[2]),c=m.getBackend();"webgl"===m.getBackend()&&m.setBackend("cpu");const y=m.tidy((()=>{const e=m.tensor2d(o,[l[1].shape[1],l[1].shape[3]]);return m.image.nonMaxSuppression(e,p,a,i,i)})),N=y.dataSync();return y.dispose(),c!==m.getBackend()&&m.setBackend(c),this.buildDetectedObjects(n,s,o,p,N,r)}buildDetectedObjects(e,a,m,d,s,n){const l=s.length,t=[];for(let o=0;o<l;o++){const l=[];for(let e=0;e<4;e++)l[e]=m[4*s[o]+e];const p=l[0]*a,r=l[1]*e,c=l[2]*a,y=l[3]*e;l[0]=r,l[1]=p,l[2]=y-r,l[3]=c-p,t.push({bbox:l,class:i[n[s[o]]+1].displayName,score:d[s[o]]})}return t}calculateMaxScores(e,a,m){const i=[],d=[];for(let s=0;s<a;s++){let a=Number.MIN_VALUE,n=-1;for(let i=0;i<m;i++)e[s*m+i]>a&&(a=e[s*m+i],n=i);i[s]=a,d[s]=n}return[i,d]}async detect(e,a=20,m=.5){return this.infer(e,a,m)}dispose(){null!=this.model&&this.model.dispose()}}e.ObjectDetection=d,e.load=async function(e={}){if(null==m)throw new Error("Cannot find TensorFlow.js. If you are using a <script> tag, please also include @tensorflow/tfjs on the page before using this model.");const a=e.base||"lite_mobilenet_v2",i=e.modelUrl;if(-1===["mobilenet_v1","mobilenet_v2","lite_mobilenet_v2"].indexOf(a))throw new Error(`ObjectDetection constructed with invalid base model ${a}. Valid names are \'mobilenet_v1\', \'mobilenet_v2\' and \'lite_mobilenet_v2\'.`);const s=new d(a,i);return await s.load(),s},e.version="2.2.3",Object.defineProperty(e,"__esModule",{value:!0})}));',
        namespace: '',
        suggestion: ''
      },
      notes: [
        {
          location: null,
          text: 'You can mark the path "@tensorflow/tfjs-core" as external to exclude it from the bundle, which will remove this error. You can also surround this "require" call with a try/catch block to handle this failure at run-time instead of bundle-time.'
        }
      ],
      pluginName: '',
      text: 'Could not resolve "@tensorflow/tfjs-core"'
    }
  ],
  warnings: []
}

Node.js v18.19.1

Video #3

The reason why the name variable shows in the video @ 3.24 that it cannot be redeclared is because name is a protected global DOM type.

If you wanted to add a note as to why that happens. 🙂

https://stackoverflow.com/a/46233014/8294418

By using export {}; it makes it a module and it removes the error.

Video #24

The starter file for const-assertions.ts is missing.

It's only 1 line but maybe it should be there? 🙂

Untitled

Video #17

The starter file for tuples.ts is missing in the playground folder.

Video #36

In the course video there is an error shown about awaiting in a CommonJS file not being possible, but even after I add the export {}; to my code it still shows for me.

It's weird, I dunno if the TypeScript config I have from the repo is different from the one that you used in the recording?

{
  "include": [
    "./**/*"
  ],

  "compilerOptions": {
    "strict": true,
    "lib": [
      "ESNext",
      "DOM",
      "DOM.Iterable"
    ],
    "skipLibCheck": true,
    "esModuleInterop": true,
    "module": "nodenext",
    "target": "esnext"
  }
}

The current file is a CommonJS module and cannot use 'await' at the top level.ts(1309)

Untitled

Video #28

The starter exercises for focus-machine contains 2 folders similarly named folders. One is named focus-machine and contains the solution code and the other is called focus-machine-start and contains the starter files.

I'm assuming that the focus-machine one should be removed as it's a duplicate of the solution that is in the finished-exercises folder.


There is also an issue with the finished-exercises folder for focus-machine.

The delegate.ts file and the dom.ts file are mixed around and in the wrong folders. delegate.ts should be in the root of the exercise and dom.ts should be in the utils folder.

Video #44

The edit in the video became too zoomed in @ 4.18 timestamp and it continues all the way to @ 7.23

It's really zoomed in during that time period. 😄

Video #46

The starter file function-overloading.ts is missing from the playground folder.

Video #11

There is a typo in the start of the video where you write a comma after Date and then it autocorrects itself to a semi-colon.

That will trip people up if they don't notice it changing and they will want to know how it was automatically changed in the course video. 🙂

Video Previews

Ready to have the videos reviewed. Ill set you up with access in your account.

I am looking for feedback on each video. Please create an issue for each video in this repo. If one is already created, please just comment on that issue.

  1. Any weird mis-cuts in the video that I missed. False starts, saying the incorrect word, or anything else that seems off or odd to you
  2. Any corrections that I got wrong in the video.
  3. Any starter files or finished solutions that are incorrect or missing. I know I am missing a few of these here, so let me know.
  4. Issues with your editor or tooling
  5. Anything else you stumble upon!

On top of that, the course in general, if you have feedback on videos or examples you wish were added. Or part of TypeScript you have questions about. Let me hear it. These videos and order are no final. Topics that will be added yet:

  1. A specific types vs interfaces video. This is covered throughout the course,but I want to have a reference video on everything.
  2. tsconfig video - detailing common settings that you may want to get setup
  3. Building for production - type checking and compiling
  4. One or two more exercises likely to added as well.

Video #12

The starter file typing-functions-START.ts is missing from the playground folder.

Video #5

@ 2.25 in the video you create a button and then optional chaining is automatically added to the button code button?.addEventListener.

I can think that it would cause questions if people don't notice it or if you don't add a note on how that happened.🙂

Video #16

The starter file for discriminating-union.ts is missing in the playground folder.

Video #48

The html file is linking the wrong ts file in the index.html in the hotdog-start folder. It should be hotdog.ts and not hotdog-coco.ts.

https://github.com/wesbos/Tasty-TypeScript/blob/main/exercises/hotdog-start/index.html#L9

The starter package.json file is also missing a main export. Vite was crashing with this error until I added "main": "./hotdog.ts" to the `package.json file.


There is also a duplicate solution for the hotdog project is in exercises instead of finished-exercises.

https://github.com/wesbos/Tasty-TypeScript/tree/main/exercises/hotdog


The actual solution for the hotdog in the finished-exercises folder also seems to include an extra vite 5 package in the package.json file that I don't think should be there 🙂

https://github.com/wesbos/Tasty-TypeScript/blob/main/finished-exercises/hotdog/package.json#L16

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.