xxxx/xxxx.d.ts
ํ์ผ์ ์ฌ์ฉํด ๋ณด์๋๋ฐ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.xxxx/xxxx.d.ts
์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์ถ์ต๋๋ค.์ค๋ ๋ด ๋น๋๋ @type/superagent์ ์ค๋ฅ๋ก ์ธํด ์คํจํ๊ธฐ ์์ํฉ๋๋ค. ๋ฌธ์ ๊ฐ ๋ฒ์ 2.0.34์์ ์์๋๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ ๋๊น์ง ๋ฒ์ ๋ฒํธ๋ฅผ ๋ฎ์ถ๊ธฐ ์์ํ์ต๋๋ค. ๊ทธ ์ ์๋ Typescript ์ปดํ์ผ๋ฌ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค(๋ฒ์ 2.1.0-dev.20161017 ์ฌ์ฉ).
@types/ [email protected] ์์ ์ค๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
node_modules/@types/superagent/index.d.ts(79,12): ์ค๋ฅ TS2304: 'XMLHttpRequest' ์ด๋ฆ์ ์ฐพ์ ์ ์์ต๋๋ค.
@types/ [email protected] ์์ ์ค๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
node_modules/@types/superagent/index.d.ts(79,12): ์ค๋ฅ TS2304: 'XMLHttpRequest' ์ด๋ฆ์ ์ฐพ์ ์ ์์ต๋๋ค.
์ด ์ ๋ณด๊ฐ ์ฌ๋ฌ๋ถ์๊ฒ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
tsc์ --lib dom
์ต์
์ ์ฌ์ฉํฉ๋๊น?
์๋์. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ๋์์ด๋๋์ง ํ์คํ์ง ์์ง๋ง ์ค์ ๋ก๋ ์ง์ ์ ์ธ ์์กด์ฑ์ด ์ต๊ณ ์ ๋๋ค. ๋จ์ ํ ์คํธ ์๋ฒ ์ธก ์ฝ๋์ ์ฌ์ฉํฉ๋๋ค.
@vvakame โ tsconfig.json์ ์๋ ๋ด compilerOptions.lib
๋ฐฐ์ด์ tsconfig.json
"dom"
๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ํธ๋ฆญ์ด์์ต๋๋ค. ์ด๊ฒ์ ๋ค์ ์ง๊ด์ ์ด์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๊ฒ์ ์์๋ ๋์์ด์ด์ผ ํฉ๋๊น ์๋๋ฉด ์ผ์์ ์ธ ํด๊ฒฐ ๋ฐฉ๋ฒ์
๋๊น?
๋ฉด์ฑ
์กฐํญ: ์ ๋ ์ํผ์์ด์ ํธ ์ฌ์ฉ์๊ฐ ์๋๋๋ค.
์์๋๋ ํ๋์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
https://www.npmjs.com/package/superagent
์ ์ฐฝํ API๊ฐ ํฌํจ๋ ์ฐ์ํ๊ณ ๊ธฐ๋ฅ์ด ํ๋ถํ ๋ธ๋ผ์ฐ์ /๋ ธ๋ HTTP
ํด๊ฒฐํด.
interface XMLHttpRequest {}
"dom"
๋ฅผ tsconfig.json
์ ์ถ๊ฐํ ๋ ๋ฐ์ํ๋ ์ ์ผํ ๋ฌธ์ ๋ ํ์ผ์ lib
์น์
์ด ์๊ณ ์ด์ ํฌํจํด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก "es2016"
์ ๊ฐ์ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
์ด ๋ฌธ์ ๋ฅผ ์๋์ผ๋ก ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? tsconfig.json
์์ ์ด ํ์ํ์ง ์์ ๊ฒ์ ๋ฌด์์
๋๊น?
["dom", "es2017"]
๋ฅผ lib์ ์ถ๊ฐํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
๋ด tsconfig.json์ "dom"์ ์ถ๊ฐํ ๋ ๋ฐ์ํ๋ ์ ์ผํ ๋ฌธ์ ๋ ์๋ฒ ์ธก ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๋์๊ฒ ์๋ฏธ๊ฐ ์์ต๋๋ค. XMLHttpRequest๋ Node.js์ ํจ๊ป ์ ๊ณต๋์ง ์์ผ๋ฉฐ ์ํผ์์ด์ ํธ ํจํค์ง๋ Node.js์์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค์ง ์์์ต๋๋ค. ๋ฌธ์ ๋ ์กฐ๊ฑด๋ถ๋ก XMLHttpRequest๋ฅผ ์ฌ์ฉํ์ง ์๋ @typings ํจํค์ง์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํจํค์ง๊ฐ Node.js์ ๋ธ๋ผ์ฐ์ ์์ ์ ์๋ํ๋ค๋ฉด @typings ๋ ์ ์๋ํด์ผ ํฉ๋๋ค.
์ค๋๋ ์ด๊ฒ์ ๋ถ๋ช์ณค๋ค. ํน์ ์ ํ์ ์กฐ๊ฑด๋ถ๋ก ์ ๊ณต/์ ์ธํ ์ ์๋ ๊ฒฝ์ฐ ๋ ธ๋ ๋ฐ dom ์ฌ์ฉ์ ๋ํด ์ด๋ฌํ ์ ํ์ ๋ ๊ฐ์ง ๋ฒ์ ์ ์ ๊ณตํ๋ ๊ฒ์ ๊ณ ๋ คํด์ผ ํฉ๋๊น?
๋ค์ ๋ด์ฉ์ผ๋ก superagent.d.ts ํ์ผ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
// error TS2304: Cannot find name 'XMLHttpRequest'
declare interface XMLHttpRequest {}
// error TS2304: Cannot find name 'Blob'
declare interface Blob {}
@vvakame ๋ ธ๋ ๋๋ DOM ์ฌ์ฉ์ ์ํด ์ค๊ณ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฝ์ฐ ๋ ํ๊ฒฝ ๋ชจ๋์์ ๋ชจ๋ ์ ๋ ฅ์ด ํ์ํ '์์ ๋์'์ด ์๋๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ ธ๋์์ ๋ธ๋ผ์ฐ์ ์ ์ญ์ ์ก์ธ์คํ ๋ ์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ ๊ฐ ํ์๋์ง ์์ผ๋ฏ๋ก ๋ฒ๊ทธ๋ฅผ ์ฝ๊ฒ ์ผ์ผํฌ ์ ์๋ ์ ๋ ฅ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์ฐ๋ฆฌ๋ https://github.com/strongloop/loopback-next ์์๋ ์ด๊ฒ์ ๋ฌผ๋ ธ์ต๋๋ค. dom
lib๋ฅผ ์ถ๊ฐํ๋ฉด ์ ์ญ ๋ค์์คํ์ด์ค๊ฐ Node.js์ ์๋ Request
์ ๊ฐ์ ์ ํ์ผ๋ก ๊ฐ์๊ธฐ ์ค์ผ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ HTTP ์๋ฒ ์คํ์ ์์ฑํ๊ณ ์์ผ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก import {ServerRequest as Request} from 'http'
๋ฅผ ์ํํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด ์ค์ด ์ค์๋ก ์๋ต๋๊ฑฐ๋ ServerRequest
๊ฐ Request
๋ก ๋ณ์นญ๋์ง ์์ผ๋ฉด TypeScript๋ ์ฝ๋๋ฅผ ํ๋ณตํ๊ฒ ์ปดํ์ผํ๊ณ ๋ฐํ์์๋ง ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํฉ๋๋ค. ์ฆ, TypeScript๋ ๋ ์ด์ ์ปดํ์ผ ์๊ฐ์ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ ์ ์์ผ๋ฏ๋ก ๋ชฉ์ ์ ๋ฌ์ฑํ์ง ๋ชปํฉ๋๋ค.
์ ๋ ์ด์ ๋ง ์ ํ๋ก์ ํธ๋ฅผ ์์ํ๊ณ ์๊ณ supertest์์ chai-http๋ก ์ ํํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ์๋ฆฌํ๊ฒ ํด๊ฒฐํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง chai-http๋ @types/supertest๋ฅผ ์ฌ์ฉํฉ๋๋ค. -_-
๋ค์์ ์ผ์ข ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค. https://github.com/jwalton/node-supertest-fetch
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ์๋๋ฉด ์์ ์ฌํญ์ด ์์๊น์? @zephyrec ์ด ๊ฐ์ฅ ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ง์ ์ฌ๋๋ค์ด ์ด๊ฒ์ ์๋ฒ ์ธก(์ฆ, ๋ ธ๋)์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๊ฐ๋จํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๋ณธ์ ํ์ฅํ๊ณ ์์ ํ๋ ํ
์คํธ๋ฅผ ์คํํ๊ธฐ ์ํด ๋ค๋ฅธ typescript ๊ตฌ์ฑ์ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ tsconfig.test.json
ํ์ผ์ ๋ง๋ญ๋๋ค.
{
"extends": "./tsconfig.prod.json",
"compilerOptions": {
"lib": ["dom", "..."] // supertest requires dom for type definitions to work
}
}
(๋๋ libs๋ฅผ ์กฐ์ ํ๋ ๋์ ์ปดํ์ผ๋ฌ ํ๋๊ทธ skipLibCheck:true
๋ฅผ ์ค์ ํ๋ฉด ๋ชจ๋ node_modules
์ ๋ํ ์ ํ ๊ฒ์ฌ๋ฅผ ๊ฑด๋๋ธ ์ ์์ต๋๋ค)
ts-jest
๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์์ ํตํด ๊ตฌ์ฑ์ ์ฌ์ฉํ๋๋ก ์ง์ํ ์ ์์ต๋๋ค.
"jest": {
"globals": {
"ts-jest": {
"tsConfig": "tsconfig.test.json"
}
}
}
์ด๋ ๊ฒ ํ๋ฉด ์ผ๋ฐ ์ฝ๋์์ ํ์ ์์ ์ฑ์ ํฌ์ํ์ง ์์ต๋๋ค. ์ด๋ ์ ๋ ํด์๋ ์ ๋ฉ๋๋ค(์ด๋ ๊ฒ ํ๊ธฐ ์ ์ ํํธ๋นํธ์์ supertest๋ฅผ ์ญ์ ํ๊ฒ ์ต๋๋ค).
https://github.com/DefinitelyTyped/DefinitelyTyped/pull/33517 ์ ์ด ๋ฌธ์ ๋ฅผ ์์ ํ์ง๋ง ํด๋น PR์ ์ค๋ฅ๋ก ๋ณํฉ๋์ด ๋ฐฉ์ง๋ฉ๋๋ค.
chai-http depends on superagent but has a lower required TypeScript version
@types/superagent์ ์์กดํ๋ ๋ชจ๋ @types ํจํค์ง๊ฐ TypeScript ์๊ตฌ ์ฌํญ์ 3.0 ์ด์์ผ๋ก ์ ๋ฐ์ดํธํ ๋๊น์ง @types/superagent๊ฐ TypeScript ์๊ตฌ ์ฌํญ์ 3.0 ์ด์์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์๋ค๋ ์๋ฏธ๋ก ํด์ํฉ๋๋ค. ๋ด TypeScript ๋ฒ์ ์ ๋์๊ฒ ์์กดํ๋ ๋ชจ๋ ๊ฒ์ ๊ฐ์ฅ ์ค๋๋ TypeScript ๋ฒ์ ์ ๊ณ ์ ์ํค๊ธฐ ๋๋ฌธ์ @types ์์คํ ์ ๊ฒฐํจ์ฒ๋ผ ๋ณด์ ๋๋ค.
๊ทธ ์ค๋ฅ ๋ฉ์์ง์ ๋ํ ๋ด ์ดํด๋ฅผ ํ์ธํ ์ ์๋ ์ฌ๋์ด ์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
ํด๋น PR๊ณผ ๊ฐ์ ๋ ๋์ ์๊ตฌ ์์ ์ฌํญ์ด ์์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
/// <reference lib="dom" />
import request = require('supertest');
"triple-slash" lib ์ง์๋ฌธ์ TypeScript ๋ฒ์ 3.0 ์ด์์์ ์๋ํฉ๋๋ค.
์ด ํธ๊ฐ ์ฐ ์ง ๊ฑฐ์ 2.5๋ ์ด ๋์์ต๋๋ค! ์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์ต๋๊น?
FWIW, TypeScript์ ์ปดํ์ผ๋ฌ ์ต์
skipLibCheck
์ ํ์ฑํํ๋ฉด ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ง๋๋ค.
skipLibCheck
๊ฐ ํ์ฑํ๋๋ฉด TypeScript๋ @types/superagent
์ ๊ฐ์ ์ข
์์ฑ๊ณผ ํ๋ก์ ํธ์ ์์ ์ ์๋ .d.ts
ํ์ผ ๋ชจ๋์์ .d.ts
ํ์ผ์ ํ์ธํ์ง ์์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ dom
๋ฅผ ์ ๊ฑฐํ ์ ์์ผ๋ฉฐ ์ปดํ์ผ๋ฌ๋ ๋ ์ด์ ๋ถํํ์ง ์์ต๋๋ค.
์ข์ ๋ถ์์ฉ์ผ๋ก skipLibCheck
๋ ์ผ๋ฐ์ ์ผ๋ก ๋น๋ ์๋๋ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
@bajtos ์ ํ ์์ ์ฑ์ด ๊ฐ์ํ๋ฏ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
lib: [ "es6" ]
์ผํจtarget: "es2016+"
๋ ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค.@G-Rath ๋ด๊ฐ ์คํดํ์ง ์๋ ํ skipLibCheck๋ ์ฝ๋์ ์ ํ ์์ ์ฑ์ ์ค์ด์ง ์๊ณ d.ts ํ์ผ๋ง ์ค์ด๊ฒ ๋ฉ๋๋ค. ๋๋ถ๋ถ์ ์ฝ๋๊ฐ ์๋ ๋ ธ๋ ๋ชจ๋์ ์ผ๋ถ์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
skipLibCheck์ ๊ด๋ จํ์ฌ ์คํ ๊ฐ๋ฅํ ํด๊ฒฐ ๋ฐฉ๋ฒ IMO๊ฐ ์๋๋๋ค. https://stackoverflow.com/questions/52311779/usage-of-the-typescript-compiler-argument-skiplibcheck ์์ "์ค๋ฅ๊ฐ ๋ฌด์์ธ์ง์ ๋ฐ๋ผ ์ปดํ์ผ๋ฌ๋ ์ฝ๋์ ๋ค๋ฅธ ๊ณณ์์ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ๋ฐฉ์์ผ๋ก ์ค๋ฅ๋ฅผ ๋ณต๊ตฌํ ์ ์์ต๋๋ค. (์๋ฅผ ๋ค์ด ์๋ชป๋ ์ ํ์ any๋ก ๋์ฒดํ์ฌ) ๋์ ๋์ง ์๊ฒ ํ์ฌ ์ ํ ์ค๋ฅ๋ฅผ ์ต์ ํ๋ ๊ฒ์(--skipLibCheck, //@ts-ignore ๋๋ ๊ธฐํ ์๋จ์ ์ํด) ์ํํ ๊ดํ์ ๋๋ค."
@carnesen ๋น์ ์ ๊ทธ๊ฒ์ ์ ๋ฅผ ๊ฑธ์์ต๋๋ค - ๊ทธ๊ฒ์ด ๋ด๊ฐ ์ธ์ฉํ๋ ค๊ณ ํ๋ ์ ํํ stackoverflow ์ง๋ฌธ์ด์์ต๋๋ค :joy:
@rjmunro ์๊ฐ์ ๐
// @ts-ignore
๋งํผ ๋์์ง๋ ์์ง๋ง ์ ํ ์ค๋ฅ๋ฅผ ์ต์ ํ๋ ๊ฒ์ ์๋ฌด๋ฆฌ ๋๋ฌผ๋๋ผ๋ ๊ธฐ์ ์ ์ผ๋ก ์ฝ๋์ ์ ํ ์์ ์ฑ์ ์ฝํ์ํต๋๋ค. ํนํ node_modules
ํด๋๊ฐ .d.ts
๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ฐ์ฅ ๊นจ๋ํ ์๋ฃจ์
์ Blob
๋ฐ XMLHttpRequest
์ ๋ํ ์ฐธ์กฐ ์ดํ superagent
์ ํ ์ ์์ ๋ํ ์ธ๋ถ ์ฐธ์กฐ๋ก dom
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ @carnesen ์ PR #33517์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. XMLHttpRequest
๋ superagent
์ ํ ์ ์์ ํ์ํ์ง๋ง ์ฌ์ฉ ๋ฐฉ์(_browser vs node_)์ ๋ฐ๋ผ ๊ตฌํ์๋ ํ์ํ์ง ์์ต๋๋ค.
์ ์ผํ ์ง์ง ๋จ์ ์ lib ์ฐธ์กฐ๊ฐ ์ง๊ธ ์ฝ 9๊ฐ์ ์ ์ ๋ฆด๋ฆฌ์ค๋ typescript ๋ฒ์ 3.0.0์ ํ์๋ก ํ๋ค๋ ๊ฒ์
๋๋ค.
์ด๊ฒ์ด chai-http( Travis-CI ์ฐธ์กฐ)์๋ง ์ํฅ์ ๋ฏธ์น๋์ง ๋๋ typescript ๋ฒ์ ์ 3.0.0์ผ๋ก ์ฌ๋ ค์ผ ํ๋ ๋ค๋ฅธ ์ข
์์ฑ์ด ์๋์ง ํ์คํ์ง ์์ต๋๋ค.
์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ๋ 2๋ฌ๋ง์..
์ด ๋ชจ๋ ๊ฒ์ ์ฝ์ ํ ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ฅ ๊นจ๋ํ ์๋ฃจ์ ์ @carnesen ์์ ์ ๊ณต๋์ง๋ง ์ ์๊ฒ๋ ์๋ํ์ง ์์ต๋๋ค :-(
/// <reference lib="dom" />
import request = require('supertest');
๋๋ ๋ํ ๊ทธ์ PR(https://github.com/DefinitelyTyped/DefinitelyTyped/pull/33517)์ ํ์ธํ์ง๋ง chai-http
๋ 3.0 ๋ฏธ๋ง์ TS ๋ฒ์ ์ด ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ TravisCI ์ค๋ฅ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค...
์ ๋ TypeScript๋ฅผ ์ฒ์ ์ ํ๋ ์ฌ๋์ด๋ฏ๋ก ์๋ชป๋ ์์ ์ ํ๊ณ ์๋ค๋ฉด ์๋ ค์ฃผ์ธ์. ์ ๋ Travis CI ๋ก๊ทธ๋ฅผ ๋ ์์ธํ ์์๋ณด๊ธฐ ์ํด @carnesen ์ด ์ PR์์ ํ๋ ๊ฒ๊ณผ ๋๊ฐ์ ์ฝ๋๋ฅผ ์ ์ถํ์ต๋๋ค(https://github.com/DefinitelyTyped/DefinitelyTyped/pull/36282).
ํธ์งํ๋ค:
chai-http
๋ ๋ ์ด์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ง๋ง promisify-supertest
๋... ๋ณ๋ก ์ธ๊ธฐ๊ฐ ์๋ ๋ฒ๋ ค์ง ํจํค์ง์ฒ๋ผ ๋ณด์
๋๋ค. (https://github.com/ariporad/promisify-supertest/blob /๋ง์คํฐ/ํ
์คํธ/์ธ๋ฑ์ค.js)
์ด๊ฒ์ ์ ๋ฐ์ดํธํ๋ ๊ณผ์ ์ ๋ฌด์์ ๋๊น?
ํธ์ง 2:
๋ ๊น์ด ํ๊ณ ๋ค์ด ๋ค์ ์ ํ ์ ์๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํจ์ ๋ฐ๊ฒฌํ์ต๋๋ค.
// ์ค๋ฅ TS2304: 'XMLHttpRequest' ์ด๋ฆ์ ์ฐพ์ ์ ์์ต๋๋ค.
์ธํฐํ์ด์ค XMLHttpRequest ์ ์ธ {}
// ์ค๋ฅ TS2304: 'Blob' ์ด๋ฆ์ ์ฐพ์ ์ ์์ต๋๋ค.
์ธํฐํ์ด์ค Blob {} ์ ์ธ
@JasonKleban ์ด ํ์ผ์ ์ด๋๋ก ๊ฐ๋์? node_modules
> superagent
? ๋๋ ์ด๊ฒ์ ์์ ๋ด๋ ค๊ณ ๋
ธ๋ ฅํด ์์ผ๋ฉฐ ๋ด ์ฌ์น์ ๋ฌ๋ ค ์์ต๋๋ค.
@mikeyamato - ์ด๋์ ์ฑ๊ณต์ ์ผ๋ก ์ฌ์ฉํ๋์ง ๊ธฐ์ต๋์ง ์์ง๋ง, ํด๋น ํ์ผ์ ์ง์ ๊ด๋ฆฌํ์ง ์๊ธฐ ๋๋ฌธ์ node_modules์์๋ ๊ธฐ์ต๋์ง ์์ต๋๋ค. ๋์ ๋ค๋ฅธ ์์ค ํ์ผ๊ณผ ๋๋ํ ์์ ์ ์์ต๋๋ค. ๋น์ ์ด ๋จผ์ ์๋ํ์ ๊ฒ์ ๋๋ค. ๋ณ๊ฒฝ ์์?
tsconfig.json ํ์ดํ ํด๋ ์ค์ ์ผ๋ก ์คํํ ์๋ ์์ต๋๊น?
ํธ์ง: ์ด๊ฒ์ ์ถ์ ํ๊ธฐ ์ํด ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ด์์ต๋๋ค: #41425
#36282์ ๋ณํฉ๊ณผ ํจ๊ป ์๋ก์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ ธ๋ ์ ์ฉ ํ๋ก์ ํธ์์ ์ํผ์์ด์ ํธ๋ฅผ ์ฌ์ฉํ ๋ ํธ๋ฆฌํ ์ฌ๋์ ์ง์๋ฌธ ๋์
/// <reference lib="dom" />
๊ฒฐ๊ณผ์ ์ผ๋ก DOM ์ ํ์ด ํ๋ก์ ํธ์ ํฌ๋ช ํ๊ฒ ์ถ๊ฐ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ ธ๋ ์ ์ฉ ํ๋ก์ ํธ์ด๋ฏ๋ก DOM์ด ์์ผ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ์์ต๋๋ค.
window.setTimeout()
TypeScript ์ค๋ฅ๊ฐ ๋ฐ์ํด์ผ ํฉ๋๋ค. DOM ์ ํ์ด ์๋์ผ๋ก ํฌํจ๋๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ์ง ์์ผ๋ฉฐ ์ฝ๋๋ฒ ์ด์ค์ ๋ฏธ๋ฌํ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ ธ๋ ์ ์ฉ ๋๋ ๋ธ๋ผ์ฐ์ ์ ์ฉ ์ ๋ ฅ์ ํ๋ก์ ํธ์ ํฌํจํ์ฌ ์ฌ์ฉํ ๊ฒ์ ์ ํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์์กด์ฑ์ ๊ฐ๋ ๋ ๋ค๋ฅธ ๋ถ์์ฉ์ dom
supertest
( superagent
) ๊ฐ lib: webworker
, ์ฐธ์กฐ: https: //github.com/microsoft/TypeScript/issues/20595. ๋ด๊ฐ ๋ณผ ์์๋ ํ, ์ด๊ฒ์ ์ด์ ์ ์ธ๊ธ๋์ง ์์์ต๋๋ค.
$ npm i @types/ superagent@latest -D
ํธ๋ฆญ์ํด์ผํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ด tsconfig.json์ "dom"์ ์ถ๊ฐํ ๋ ๋ฐ์ํ๋ ์ ์ผํ ๋ฌธ์ ๋ ์๋ฒ ์ธก ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๋์๊ฒ ์๋ฏธ๊ฐ ์์ต๋๋ค. XMLHttpRequest๋ Node.js์ ํจ๊ป ์ ๊ณต๋์ง ์์ผ๋ฉฐ ์ํผ์์ด์ ํธ ํจํค์ง๋ Node.js์์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค์ง ์์์ต๋๋ค. ๋ฌธ์ ๋ ์กฐ๊ฑด๋ถ๋ก XMLHttpRequest๋ฅผ ์ฌ์ฉํ์ง ์๋ @typings ํจํค์ง์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํจํค์ง๊ฐ Node.js์ ๋ธ๋ผ์ฐ์ ์์ ์ ์๋ํ๋ค๋ฉด @typings ๋ ์ ์๋ํด์ผ ํฉ๋๋ค.