例えば
a.ts
const express = require("express")
const router = express.Router()
/* GET home page. */
router.get("/", function (req, res, next) {
const title: string = "a"
res.render("index", { title: title })
})
module.exports = router
b.ts
const express = require("express")
const router = express.Router()
/* GET home page. */
router.get("/", function (req, res, next) {
const title: string = "b"
res.render("index", { title: title })
})
module.exports = router
これでアウト
TypeScriptが最終的に一つにまとめることを想定しているので同じ名前で宣言してはいけないと言うこと?
ES6以降なら問題ないらしいがそのためにはNode7以降が必要で...
以下のように書き換える
a.ts
{
const express = require("express")
const router = express.Router()
/* GET home page. */
router.get("/", function (req, res, next) {
const title: string = "a"
res.render("index", { title: title })
})
module.exports = router
}
b.ts
{
const express = require("express")
const router = express.Router()
/* GET home page. */
router.get("/", function (req, res, next) {
const title: string = "b"
res.render("index", { title: title })
})
module.exports = router
}
letもconstも変数の巻き上げ自体は行われているみたいだがこれでビルドが通る理由は不明
いわゆる仕様的なものだろうか?