typescriptメモ
tsconfig.json
{
"compilerOptions": {
"outDir": "./dist",
// 出力されるjsのversion。現状のブラウザに対応しているものであればよい。
"target": "ES5",
// exportの形式 commonjsだとnode使用、amdだとブラウザ使用などの方式がある
// https://qiita.com/nanocloudx/items/70f1316debf05b93ac82
// es2015はexportを使った規格で、対応していないブラウザも存在する
// https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/export#browser_compatibility
"module": "es2015"
},
"include": [
"src/**/*"
]
}
こちらを参考にしてやっていく
readonly = const
classのアクセス制御のprivate, publicと併用化
readonlyを使ったときは、定義時 or constructor内のみで定義できる
typescriptは小数もnumberを使うらしい。
floatとかdouble的なものはない。
import exportができないので、同じファイルに定義を追加して対応
Uncaught SyntaxError: Cannot use import statement outside a module
上記のようなエラーが出力されて、importできない
Solution 1 – Add “type”: “module” to package.json
やってみたけどだめ
If you are using TypeScript, we need to edit the tsconfig.json file and change the module property to “commonjs“, as shown below.
tsconfigのmoduleをes2015→commonjsに変えたらできた
できたけどレンダリングがされない...
scriptタグの中身をtypemoduleにしたらCORSでたり、exportよみこめなかったりするのであきらめ
text/javascript
とapplication/javascript
の違い
要はapplicationのほうが新しいということらしい
そもそもwebで動かすplainなhtmlにjavascriptからjavascriptをimportするといった機能はない。
多分。
なので、module化したjavascriptを他のjsに読み込む際には、サーバーを介して実行する必要がある。
nodeやphpを使って起動させる必要がある。
http-serverなるものをつかってみたが、反応なし。
多分nodeの機構だからrequire構文を使わないといけないかも
おとなしくreactいれたほうが早そう
nextjsにtypescirpt導入
pagesにおける引数の渡し方
基本的にpagesはバケツリレーの先頭になるから、引数は親コンポーネントとかではなく、apiからになる。
となるとgetInitialPropsとの複合的な扱いになる。
サンプルは以下
pages/about.tsx
それっぽいのができたimport type { NextPage } from 'next'
interface Props {
hello?: string;
}
const About: NextPage<Props> = ({hello}) => {
return (
<>
<div>about</div>
<div>{hello}</div>
</>
)
}
About.getInitialProps = () => {
const hello = "hello"
return { hello }
}
export default About
localhost:3001/api/hello
← これでデフォルトで作成されているapiが帰る
reactでcanvasを使おうとしたが、相性がよくなさそうなので、こちらを参考に作っていこうかなと