Closed19

typescriptメモ

bayamasabayamasa

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/**/*"
	]
}
bayamasabayamasa

readonly = const
classのアクセス制御のprivate, publicと併用化

readonlyを使ったときは、定義時 or constructor内のみで定義できる

bayamasabayamasa

import exportができないので、同じファイルに定義を追加して対応

bayamasabayamasa

Uncaught SyntaxError: Cannot use import statement outside a module
上記のようなエラーが出力されて、importできない

bayamasabayamasa

Solution 1 – Add “type”: “module” to package.json
やってみたけどだめ

bayamasabayamasa

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に変えたらできた

bayamasabayamasa

scriptタグの中身をtypemoduleにしたらCORSでたり、exportよみこめなかったりするのであきらめ

bayamasabayamasa

そもそもwebで動かすplainなhtmlにjavascriptからjavascriptをimportするといった機能はない。
多分。

なので、module化したjavascriptを他のjsに読み込む際には、サーバーを介して実行する必要がある。
nodeやphpを使って起動させる必要がある。

bayamasabayamasa

pagesにおける引数の渡し方
基本的にpagesはバケツリレーの先頭になるから、引数は親コンポーネントとかではなく、apiからになる。
となるとgetInitialPropsとの複合的な扱いになる。
サンプルは以下
https://nextjs.org/docs/api-reference/data-fetching/get-initial-props

bayamasabayamasa

pages/about.tsx
http://localhost:3001/about
それっぽいのができた

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

このスクラップは2022/05/04にクローズされました