ํ์ฌ @ts-ignore๋ ๋ฐ๋ก ์๋ ์ค์ ์ค๋ฅ๋ง ์์๊ฑฐํฉ๋๋ค.
์ ๋ํด ๊ฐ์ ๊ฒ์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
๋ฆฌํฉํ ๋ง: ์ฝ๋ ์กฐ๊ฐ์ ์ฃผ์ ์ฒ๋ฆฌํ์ฌ ์ฝ๋ ์์ด๋ ๋ฌด์์ด ์ค๋จ๋ ์ง ํ์ธํ์ง๋ง ์ฃผ์ ์ฒ๋ฆฌ๋ ์ฝ๋๊ฐ ๋ง์ ์ ์๋ ํ์ผ์ ์ค๋ฅ ์ฒ๋ฆฌ๋ ํผํฉ๋๋ค.
๋กค์ด ํ์ํด
์ด ๊ธฐ๋ฅ์ ํ์ฌ ์ฌ์ฉ ์ฌ๋ก๋ ๊ณต๋ฐฑ์ ์ฒ๋ฆฌํ๋ ๋จ์ ํ ์คํธ์ ๋๋ค. ์ฐ๋ฆฌ๋ ํฉ๋นํ ์ด์ ๋ก ์ฝ๋๋ฒ ์ด์ค์์ "ํํ ๊ณต๋ฐฑ ์์" ๊ท์น์ ์ค์ ํ์ง๋ง ๋ธ๋ก ์์ค์์ ์ด๋ฅผ ์๋ํ ์ ์๋ค๋ ๊ฒ์ ES6 ํ ํ๋ฆฟ ๋ฌธ์์ด์ ์ฌ์ฉํ์ฌ ํํ ๊ณต๋ฐฑ ๋ฐ ์บ๋ฆฌ์ง ๋ฆฌํด์ ์ฝ๊ฒ ํ ์คํธํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. .
Mathjs์์ ์ฌ์ฉ์ ์ง์ ๋ฒ๋ค๋ง _ a.k.a partial import
_ ์ ์ฌ์ฉํ๋ ์ฌ์ฉ ์ฌ๋ก ์ค ํ๋
// tslint:disable:no-var-requires
import core from 'mathjs/core'
// @ts-ignore
import mathUnit from 'mathjs/lib/type/unit'
// @ts-ignore
import mathExpression from 'mathjs/lib/expression/function'
// @ts-ignore
import mathArithmatic from 'mathjs/lib/function/arithmetic'
const math = core.create()
// math.import(require('mathjs/lib/type/unit'))
// math.import(require('mathjs/lib/expression/function')) // compile, eval
// math.import(require('mathjs/lib/function/arithmetic')) // basic arithmetic like divide, exponent, etc
math.import(mathUnit)
math.import(mathExpression) // compile, eval
math.import(mathArithmatic) // basic arithmetic like divide, exponent, etc
export const unit = math.unit
export const createUnit = math.createUnit
export const compile = math.compile
์ ์ฒด ํ์ผ์ ๋ํ ์ค๋ฅ๋ฅผ ๋ฌด์ํ๊ณ ์ถ์ต๋๋ค. ES5๋ก ๋ณํํ๊ณ ์ถ์ง๋ง ์ง๊ธ์ Babel์ ์ฌ์ฉํด์ผ ํ๋ ES6 JS ์ฝ๋๋ฅผ ์์๋ฐ์์ต๋๋ค. ํ์ผ ์ด๋ฆ์ .ts๋ก ๋ฐ๊พธ๊ณ TS๋ก ๋ณํํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค.
@ptallett allowJs
๋ฅผ ์ฌ์ฉํ์ฌ $ .js
ํ์ผ์ ์ปดํ์ผํ๊ณ ์ปดํ์ผ์ ํฌํจํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ผ ์๋จ์ // @ts-check
์ฃผ์์ด ์๊ฑฐ๋ checkJs
๋ฅผ ์ค์ ํ์ง ์๋ ํ .js
ํ์ผ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
๋๋ ์ฌ์ ํ ์ด ๊ธฐ๋ฅ์ ์ข์ํ ๊ฒ์ ๋๋ค. ํ ์คํธ ํ์ผ์ ์์ ์๊ณ ํ์ฅ์๊ฐ .ts์ด๋ฏ๋ก ์ด๋ค ๋งค๊ฐ๋ณ์๊ฐ ์ด๋๋ก ๊ฐ๋์ง ๊ฐ์ ธ์ค๊ณ ์ฝ๊ฒ ๋ณผ ์ ์์ผ๋ฉฐ src ํ์ผ ์์ ๋๋ ํ ๋ฆฌ๋ก ์ปดํ์ผํ๋ ๊ฒ์ ์ ์ฌ์ฉ ์ฌ๋ก์ ํ๋ฅญํฉ๋๋ค. .
์๋์ ์ผ๋ก ์ผ๋ถ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ธํ๊ฑฐ๋ ํจ์์ ์๋ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋ค๋ฅธ ์ ํ์ ์ง์ ํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ์ ์ค์ ์ด์ ๋นจ๊ฐ์์ผ๋ก ํ์๋๋ฉฐ ๋ฐํ์์๋ ํ์ธํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
๋์ฒ์ ๋นจ๊ฐ ์ ์ด ๋ง์ด ์๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค. :)
๊ทธ๊ฒ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น, ์๋๋ฉด ๋๊ตฌ๋ ์ง ์ด๊ฒ์ ์ํํ๋ ์ข์ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๊น?
lodash
๋ฐ ํนํ lodash/fp
๋ฅผ TypeScript์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ ๋งค์ฐ ๊ณ ํต์ค๋ฝ๊ณ , lodash
๋ฐ @types/lodash
์ ์ต์ ๋ฒ์ ์์๋ ๋งค์ฐ ์ ๋งคํ ์ค๋ฅ ๋ฉ์์ง๋ก ๋๋ ์ ์์ต๋๋ค.
๋ค์ ๋ธ๋ก์ ๋ํ ์ค๋ฅ๋ฅผ ๋ฌด์ํ๋ @ts-ignore-block
๋ฅผ ๊ฐ์ง ์ ์๋ค๋ฉด _๋น์ ์ด ๋ฌด์์ ํ๊ณ ์๋์ง ์๊ณ ์๋_๊ณผ ๊ฐ์ ์ฌ์ฉ ์ฌ๋ก์ ์์ฃผ ์ข์ ๊ฒ์
๋๋ค. :-)
์ ๋ ์๋ง์ ์ ์ญ ๋ฒ์ ๋ณ์๊ฐ ์๋ ๋ ๊ฑฐ์ ์ฝ๋๋ก ์์ ํ๊ณ ์์ผ๋ฉฐ ๋ชจ๋ ์ค์ @ts-ignore๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ง๋ฃจํด์ง๋๋ค. ์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๋ํ ์ด ์์ฒญ์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์ฐพ๊ณ ์์ต๋๋ค. ๊ฐ์ฌ ํด์!
์ด๊ฒ์ ๋ํ ๋ด๊ฐ ํ๊ณ ์๋ ์ผ(์ฆ, ์ฝ๋ ๋ธ๋ก์ ๋ํ ํน์ ๊ฒ์ฌ๋ฅผ ๋นํ์ฑํํด์ผ ํ๋ ์์ฑ๋ Vue ํ
ํ๋ฆฟ ๋ ๋ ๊ธฐ๋ฅ ์ ํ ๊ฒ์ฌ)์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ด ๋ฌธ์ ์ ํจ๊ป #19139๋ ๋งค์ฐ ์ค์ํฉ๋๋ค. ํนํ ์ฝ๋์ ๋ง์ ๋ถ๋ถ์ ์ ์ฉํ ๋ ํน์ ๊ฒ์ฌ๋ง ๋นํ์ฑํํ๊ธฐ๋ฅผ ์ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ตฌ๋ฉ ํ์ผ์ ์ต์ ํ๋ฉด ์์ ๊ณต๊ฐ ์ค์ ๋ฑ์ ์ ์ฅํ๊ธฐ ์ํด vs ์ฝ๋์ ๊ฐ์ ํธ์ง๊ธฐ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ด๊ฒ๋ ํ์ํฉ๋๋ค. graphql-code-generator
๋ฅผ ์ฌ์ฉํ์ฌ ๋ด GraphQL ์คํค๋ง์ ๋ํ ์ ํ์ผ๋ก ์ ์ฒด ts ํ์ผ์ ์๋ ์์ฑํ๊ณ ์์ผ๋ฉฐ noUnusedLocals๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ๊ด๋ จ ์๋ ๊ฐ์ ธ์ค๊ธฐ๊ฐ ์์ต๋๋ค.
// @ts-ignore-start
// @ts-ignore-end
๋ค์๊ณผ ๊ฒฐํฉ ๊ฐ๋ฅ: https://github.com/Microsoft/TypeScript/issues/19139
// @ts-ignore-start Property_0_does_not_exist_on_type_1
// @ts-ignore-end (possible include the error type again so you can turn be more specific of where you want to ignore some errors
@marianturchyn ์ด๊ฒ์ tslint๊ฐ ์๋๋๋ค.
๋๋๋ก ๋ฌผ๊ฑด์ ์ฎ๊ธฐ๊ณ ๋ฆฌํฉํ ๋งํ๋ ๋์ CLI ์ต์ ์ ์ฌ์ฉํ์ง ์๊ณ ์ ์ฒด ํ์ผ์ ์ผ์์ ์ผ๋ก ๋ฌด์ํ๊ณ ์ถ์ต๋๋ค(์ฆ, ์ปดํ์ผํ์ง ์์).
๊ฐ์ฅ ๋น ๋ฅด๊ณ ์ฌ์ด ๊ฒ์ ํ์ผ ๋งจ ์์ ์๋ ํ๋๊ทธ์ ๋๋ค.
// @ts-ignore-file
@lonix1 ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์์์ ๋ค๋ฃน๋๋ค.
// @ts-ignore-start
// @ts-ignore-end
// @ts-ignore-end
๋ถ๋ถ์ ์ฌ์ฉํ ํ์๊ฐ ์์ต๋๋ค. ๋ง์ ๋ฆฐํธ ๋๊ตฌ๊ฐ ๊ทธ๋ฐ ์์ผ๋ก ์๋ํฉ๋๋ค.
@mgol ์ด ์ค๋ ๋๋ฅผ ํ์ ์ํค๊ณ ์ถ์ง ์์ต๋๋ค... ํ์ง๋ง ์ ์์ ์๋ํ์ต๋๋ค - ๊ฐ์ฌํฉ๋๋ค! - ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์๋ํ์ง ์์์ต๋๋ค. ๋๋ ํ์ผ์ ์๋จ์ ์ค์ ํจ๊ป ๋ฃ๊ณ ์๋จ์ ํ๋๋ฅผ, ํ๋จ์ ๋ค๋ฅธ ํ๋๋ฅผ ์๋ํ์ต๋๋ค.
๋ค๋ฅธ ์ฌ๋์ด ์๋ํ๋๋ก ํ ์ ์์ต๋๊น?
@lonix1 @Blanen ์ ์ ์์ด ๋น์ ์๊ฒ๋ ํจ๊ณผ๊ฐ ์๋ค๋ ๊ฒ์ ์๋ฏธํ์ต๋๋ค // @ts-ignore-start
+ // @ts-ignore-end
์ // @ts-ignore-file
๋ฅผ ๊ตฌํํ๊ธฐ ์ํด TypeScript๊ฐ ํ์ํ์ง ์์ต๋๋ค. // @ts-ignore-start
+ // @ts-ignore-end
์ด๋ฉด ์ถฉ๋ถํฉ๋๋ค. ์ด๊ฒ์ ๊ตฌํ๋์ง ์์๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ๊ฐ ์ฌ์ ํ ์ด๋ ค ์์ต๋๋ค.
@DanielRosenwasser ์ด๊ฒ์ ๋น๋ ์ค์ ts ํ์ผ์ด ๋ค๋ฅธ ํด๋์ ์ ์ฅ๋ ๋๋ง ์๋ํฉ๋๋ค. ํ๋ก์ ํธ๊ฐ ts ํ์ผ ์์ js ํ์ผ์ ๋ฐฐ์นํ๋๋ก ์ค์ ๋๋ฉด ๊ทธ๋ ์ง ์์ต๋๋ค. ๋ํ js ํ์ผ์ด '์ปดํ์ผ'๋ฉ๋๊น(์: es5๋ก ๋ณํ)? ๋ ๊ฑฐ์ ์ฝ๋๋ฅผ ์ ์กํ ๋ ์ด๊ฒ์ ์ ๋ง ๋์์ด ๋ ๊ฒ์ ๋๋ค.
์ด ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก:
TypeORM ์ null์ ํ์ฉํ๊ฑฐ๋ ํ์ฉํ์ง ์์ ์ ์๋ ์ด์ด ์๋ DB ์ํฐํฐ ํด๋์ค๋ฅผ ์์ฑํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ๋ง์ ์ด(๋ฐ๋ผ์)์ nullable์ด ์๋๋ฏ๋ก ์์ฑ์ด ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ์ ์๋ ํน์ ์ ํ์ธ ๊ฒ์ฒ๋ผ ํด๋์ค ์ ์๋ฅผ ์ ์ธํ๊ณ ๋ ์ฒ๋ฆฌ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ Typescript์์๋ ๋ชจ๋ ์ด์ ๊ฐ๋ ฅํ ํ์์ผ๋ก ์ ์ํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋ง์ ์ํฐํฐ๋ก ๋๋ฉ๋๋ค.
@Entity('investigation')
export class InvestigationEntity {
@PrimaryGeneratedColumn('uuid')
// @ts-ignore TS2564
public investigationId: string;
@Column({ type: 'uuid' })
// @ts-ignore TS2564
public userId: string;
@Column({ type: 'jsonb' })
// @ts-ignore TS2564
public metadata: IEncryptedJSONContainer;
}
๋ชจ๋ ์ด์ ํ์์ด๋ฉฐ (๋ฐ๋ผ์) ๊ฐ์ ํฌํจํด์ผ ํ์ง๋ง TypeORM์ด ์๋ํ๋ ๋ฐฉ์์ผ๋ก ์ธํด ๋ชจ๋ ์์ฑ์ ์ด๊ธฐํ๊ฐ ์๋ ๋ฐฉ์์ผ๋ก ์ ์๋์ด์ผ ํฉ๋๋ค. ์ ์ฒด ํด๋์ค(๋ฐ๋ผ์/๋๋ ํ์ผ)์ ๋ํด ์ด ํน์ ORM ํ์/ํน์ ๋ฌธ์ ๋ฅผ ์ต์ ํ ์ ์์ผ๋ฉด ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค.
@haggholm public metadata!: IEncryptedJSONContainer
ts-ignore
๋ฅผ ์ ํธํ๋ ์ด์ ๊ฐ ์์ต๋๊น?
@RyanCavanaugh ๋ฌด์ง! ๋๋ ๋ฌธ์์์ ๊ทธ ๊ธฐ๋ฅ์ ๋์ณค๋ค. ์ฃ์กํฉ๋๋ค; ๋ฌด์ํ์ธ์.
๋๋ ํ๊ณ ์ถ๋ค
// @ts-ignore-start
--strick null ๊ฒ์ฌ, ํ๋์ ํน์ ํ์ผ์ ๋ํด
์ด๊ฒ์ด typescript๋ฅผ ์ฌ์ฉํ์ฌ ๋น๊ณต๊ฐ ํ๋์ ๋ฉ์๋๋ฅผ ๋จ์ ํ ์คํธํ๋ ๋ชจ์ต์ ๋๋ค. ์ฝ๋ ๋ฌด์์ ์ ๋ ํ๋ 6 ์ค์ด ์์ต๋๋ค. ๋์ฐํ. ๋ด ๋์ ํผํฉ๋๋ค. ๋ธ๋ก ๋ฌด์์ ๋ํ ๋ชจ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋จํ ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
it('TestNode_ReconnectionsWorkload', async function () {
for (let i = 0; i < 1; i++) {
nodes.push(await Node.NewNode(serverUrl, {
handlers: {
active: async function (n: Node) {
try {
// @ts-ignore
if (n.view.Empty()) {
// @ts-ignore
if (n.conns.Empty() && !n.server) {
// @ts-ignore
await n.login(n.address);
}
return;
}
const data = new flats.Message({
// @ts-ignore
id: n.id,
type: flats.MessageType.Data,
data: 'hello world',
});
const dataBytes = data.toBytes();
const dataBase64 = base64.encode(dataBytes);
// @ts-ignore
const dataSigBytes = await n.sign(dataBytes);
const dataSigBase64 = base64.encode(dataSigBytes);
// @ts-ignore
for (const conn of n.conns.Iter()) {
conn.Send(`${dataBase64}.${dataSigBase64}`);
}
} catch (error) {
console.log(error);
}
},
},
}));
}
for (const node of nodes) {
await node.Wait();
}
});
๊ธ์, ๋๋ ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ํ์ง๋ง์ด ๋ฌธ์ ๊ฐ ๊ทธ๊ฒ์ ๋ค๋ฃฐ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@ts-ignore ๋ ์ฌ๋ฌ ์ค ๋ฐ ํ ์ค ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํฉ๋๋ค!
ํ์ดํ์ด ์๊ฑฐ๋ NoImplicitAny ์์ด ์์ฑ๋ npm ๋ชจ๋์ด ์ฌ์ ํ ๋ง์ด ์์ต๋๋ค.
"์์์ " ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๊ฐ์ ธ์ต๋๋ค.
import { a, b } from 'MyNonTypedModule' // <-- Implicit any error
๋ฐ๋ผ์ @ts-ignore๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
//@ts-ignore
import { a, b } from 'MyNonTypedModule'
๊ทธ๋ฌ๋ Prettier์ ๊ฐ์ ์๋ ๊ฐ์ ธ์ค๊ธฐ ๋ฐ ํฌ๋งทํฐ๋ก ์์
ํ ๋ ๋ค์๊ณผ ๊ฐ์ ์ผ์ด ๋ฐ์ํฉ๋๋ค.
(Prettier์์ ํฌ๋งท)
//@ts-ignore
import {
a,
b
} from 'MyNonTypedModule' // <-- Still (again) getting the Implicit any error
๋๋ ๊ทธ๊ฒ์ ๊ณ ์น ์ ์๋ค:
import {
a,
b
//@ts-ignore
} from 'MyNonTypedModule'
๋๋
//@ts-ignore-start
import {
a,
b
} from 'MyNonTypedModule'
//@ts-ignore-end
๊ทธ๋ฌ๋ ํ ์ค ๊ฐ์ ธ์ค๊ธฐ์์ ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ด๊ธฐ ์์ํฉ๋๋ค.
//@ts-ignore-start
import { a } from 'MyNonTypedModule'
//@ts-ignore-end
import { b } from 'SomeTypedModule'
//@ts-ignore-start
import { c } from 'SomeOtherNonTypedModule'
//@ts-ignore-end
๋ชจ๋์์ ๊ฐ์ ธ์จ ์์์ ์์ ๋ฐ๋ผ ์๋ ๊ฐ์ ธ์ค๊ธฐ ๋ฐ ์์์ด ํ ์ค ๊ฐ์ ธ์ค๊ธฐ์ ์ฌ๋ฌ ์ค ๊ฐ์ ธ์ค๊ธฐ ๊ฐ์ ๋ณ๊ฒฝ๋๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ์์ฑํด์ผ ํฉ๋๋ค.
๊ฐ์ ธ์ค๊ธฐ ์ฝ๋๋ฅผ ์๋์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ์๋ ๊ฐ์ ธ์ค๊ธฐ์ ๋ชฉ์ ์ด ์ค์ ๋ก ๋ฌดํจํ๋ฉ๋๋ค.
๋ชจ๋ ๋จ์ผ ๊ฐ์ ธ์ค๊ธฐ์ ๋ํด ts-ignore-start ๋ฐ ts-ignore-end๋ฅผ ์์ฑํ ํ์๊ฐ ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ฐ๋ผ์: //@ts-ignore ๊ฐ์ ธ์ค๊ธฐ(๋ค์ ์ค ๋ฟ๋ง ์๋๋ผ)๋ ts-ignore๊ฐ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒ์
๋๋ค. (๋๋ @ts-ignore-block / @ts-ignore-import์ ๊ฐ์ ๋ค๋ฅธ ๋ฌด์)
์ ์ฒด ํ์ผ์์ ํน์ ์ค๋ฅ๋ฅผ ์ต์ ํด์ผ ํฉ๋๋ค.
// @ts-ignore-all TS1206
/*
... rest of the file
*/
์ด ์ค๋ ๋์์ ์ธ๊ธ๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด // @ts-ignore-start
๋ฐ // @ts-ignore-end
์ฃผ์์ ์ ์ํ ์์ ์ฌ๋๋ค๊ณผ ๋์ํฉ๋๋ค.
์ด๊ฒ์ ํ์ฌ // @ts-ignore
์ง์๋ฌธ๊ณผ ๋งค์ฐ ์ ์ฌํ๊ณ ๋งจ ์์ // @ts-ignore-start
์ง์๋ฌธ์ด ์๋ ํ์ผ์ ๋ชจ๋ ์ค๋ฅ๋ฅผ ๋ฌด์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ข์ต๋๋ค.
์์ ์ฌ๋ฌ ์ ์์ ๋ํ ๊ธ์ ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ๋ด๊ฐ ์ ์:
ํ์ฌ ๋์์ผ๋ก @ts-ignore
@ts-ignore TSxxx [TSxxx ...]
ํน์ ์ค๋ฅ ์ต์
@ts-ignore-start
๋ฌด์ํ ๋ธ๋ก ์์
@ts-ignore-start TSxxx [TSxxx ...]
๋ธ๋ก์ ๋ํ ํน์ ์ค๋ฅ ์ต์
@ts-ignore-end
์๋ ๋ธ๋ก
@ts-ignore-all
๋๋จธ์ง ํ์ผ์ ๋ํ ์ค๋ฅ ์ต์
@ts-ignore-all TSxxx [TSxxx ...]
๋๋จธ์ง ํ์ผ์ ๋ํ ํน์ ์ค๋ฅ ์ต์
"ํน์ ์ค๋ฅ"์๋ tsconfig ๋๋ TSxxx ์ค๋ฅ์ ์ฌ์ฉ์ ์ ์ ๊ทธ๋ฃน๊ณผ ์ ์ฌํ ๋ช ๋ช ๋ ๊ทธ๋ฃน์ด ํฌํจ๋ ์ ์์ต๋๋ค.
๊ฐ์ ธ์จ ๋ชจ๋์ ์ค์ฒฉํ๋ ๋ฌด์ ๋ธ๋ก์ ๊ฐ์ด ํ์คํ์ง ์์ต๋๋ค. ๋ด ๊ธฐ๋ณธ ์ค์ ์ ๊ฐ์ ธ์จ ๋ชจ๋ ํ์ผ ๋ด์์ ๋ช ์์ ์ธ ts-ignore ๋ธ๋ก์ ๋๋ค. ๊ทธ๋ฌ๋ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ฌ ๋ ์ด์ ๋ํ ์ด์ ๊ฐ ์์ ์ ์์ผ๋ฏ๋ก ์ฌ๊ธฐ์์ ๊ฒฝ๊ณํฉ๋๋ค.
.tsignore
ํ์ผ
.npmignore
๋ฐ.gitignore
์ฒ๋ผ
๋ฌด์ ๋ธ๋ก์ด ์์ด์ผ ํฉ๋๋ค. ๋๋ puppeteer ํ๋ ์ ์ํฌ์ ๊ฐํ์ต๋๋ค. puppeteer์๋ ํ์ด์ง์์ ์์์ ์คํฌ๋ฆฝํธ ๋ธ๋ก์ ์คํํ ์ ์๋ "ํ๊ฐ" ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด ์์์ ์คํฌ๋ฆฝํธ ๋ธ๋ก์ ํ์ด์ง์์ ์ฌ์ฉํ ์ ์๋ ํจ์์ ๋ํ ์ฐธ์กฐ๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. ์ฆ, ํจ์ ์ฐธ์กฐ๋ ๋ฐํ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
// @ts-ignore-start // @ts-ignore-end
์ด๊ฒ์ ๋ ๊ฑฐ์ ์ฝ๋ ๋ฉ์ด๋ฆฌ๋ก ์์ ํ ๋ ๋งค์ฐ ํธ๋ฆฌํ์ฌ ์ฌ๋๋ค์ด TypeScript๋ก ์ ํํ๋ ๊ฒ์ ๋ ๊ณ ํต์ค๋ฝ๊ฒ ๋ง๋ญ๋๋ค.
์ ๋ํ
// @ts-ignore-start
// @ts-ignore-end
์ด์ ์ ์ด ์ ์์ ํ๊ณ ๊ตฌ๋ฌธ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ต๋๋ค.
์์-์ค์ง ๋๋ ์์-์ข
๋ฃ๋ก ์ค์
start
๋ฐ end
(๋์ฌ)๋ ๋ฐ์์ด๊ฐ ์๋๋ฉฐ ํ์ดํ์คํฌ๋ฆฝํธ์ ๋ค์ด๊ฐ๋ฉด ์์ํ ๊ท์ฐฎ๊ฒ ๋ฉ๋๋ค.
๋ด๊ฒ ๋ฉ์ง ์ผ์ด์ผ
// @ts-ignore-begin
// @ts-ignore-end
๋งค์ฐ ํ์ํ ๊ธฐ๋ฅ์ ๋๋ค.
์ด๊ฒ์ด ์ฌ์ ํ ๋ถ๊ฐ๋ฅํ ์ด์ ๋ ๋ฌด์์ ๋๊น? :-(
๋๋ ์ฐจ๋จ ๋ฌด์๊ฐ ํ์ํด
+1
+1
์ด๊ฒ์ ๋ํ ์ด๋ค ์ ๋ฐ์ดํธ?
๐๐ป
๊ทธ๋ฆฌ๊ณ eslint๋ฅผ ์ฌ์ฉํ์ฌ ํ์์ ๋์ผํ๊ฒ ํ๋ฉด?
/* @ts-disable */
!function(){
// no ts here!
}()
/* @ts-enable */
์์์ ์ธ๊ธํ ๋๋ก: ์๋ฅผ ๋ค์ด ์ฌ์ฉ๋์ง ์์ vars๊ฐ ๋ฐ์ํ ์ ์๋ TS ์ฝ๋(์: swagger ์ฌ์ฉ)๋ฅผ ์์ฑํ๋ ์ฆ์ ์ด ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค.
+1
//@ts-ignore-file
์์ด๋ TS๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ ์ ์์ต๋๋ค.
๊ทธ๋์ ์๋ฌด๋ ๋์น์ฑ์ง ๋ชปํ๋ค๋ ๊ฒ์ ์ฌ์ค์ด ์๋๋ค.
@RyanCavanaugh ์ปค๋ฎค๋ํฐ์๋ ๋ถ๋ช ํ ์ด๊ฒ์ด ํ์ํฉ๋๋ค. ์ด๊ฒ์ด ํด๊ฒฐ๋์ง ์์ ์ด์ ๊ฐ ์์ต๋๊น? ๊ฐ์ฌ ํด์!
Typescript๊ฐ ์ธ๊ณ ๋ด ๋ ๋๋ง์ ์ฐจ๋จํ์ง ์๊ณ ๋ ์คํ ๊ฐ๋ฅํ์ง ํ์ธํ๊ธฐ ์ํด ์๋ํ๋ ์๋ฃจ์ ์ ๊ฐ์ง๊ณ ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ ์ด๊ฒ์ผ๋ก ์ด๋ ค์์ ๊ฒช๊ณ ์์ต๋๋ค.
ํ์ฌ ์ด ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๊ด์ฌ์ด ์๋ ์ผ๋ถ ํจ์์ ๋ํ ๋
ธ๋ ์ ํ์ด ์๋ ๊ณต๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋จ์ผ ๊ฐ์ ธ์ค๊ธฐ์ // @ts-ignore๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ๊ฒ์
๋๋ค. skipLibCheck
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌด์ํ๋ ๋์ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
์ฒ์์๋ // @ts-ignore-file ์์ด๋์ด๋ฅผ ์ข์ํ์ง๋ง // @ts-ignore๋ ์ผ๊ด์ฑ์ ์ํด ๋ ์ ์๋ํ ๊ฒ์ ๋๋ค.
๊ทธ๋์.... typescript ํ์ผ์์ //@ts-nocheck
๋ฅผ ์ง์ํ๋ #33383์ ์ด์์ต๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ _TypeScript_ ์ปดํ์ผ๋ฌ ํ์ด๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ์ดํดํ์ง ๋ชปํฉ๋๋ค. (๊ฐ๋ฅ์ฑ์ด ์๋ ๋ฌธ์ ๋ฅผ ์์ ํ์ง ์๊ณ , ์์์์!!?!?) - typescript์ //@ts-ignore
๋ ํ์ด ๊ผฌ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋์์ต๋๋ค. ์ฝ๊ฐ, ๊ทธ๋์ ์ฐ๋ฆฌ๋... ๋ ์ด์์ ์ต์ ๋ฉ์ปค๋์ฆ์ ์ถ๊ฐํ๊ธฐ๋ฅผ... ์ฃผ์ ํ๊ณ ์์ต๋๋ค. ๊ทธ๋์ ์ฌ๋ฌ๋ถ์ด ์ ๋ง๋ก ๊ทธ๋ฐ ๊ด๋ฒ์ํ ์ต์ ๋ฉ์ปค๋์ฆ์ด ํ์ํ๋ค๊ณ ๋๋๋ค๋ฉด ๊ฑฐ๊ธฐ์ ๊ฐ์ ๐
@weswigham , ์ด๊ฒ์ ์๋ง๋ ๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ฅ์ ์๋ ๊ฒ์ ๋๋ค. ๊ฐ๋ฐ ์ค์ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ช ์ค์ ์ฝ๋์ ์์๋ก ์ฃผ์์ ์ถ๊ฐํ๋ ๊ฒ์ฒ๋ผ ๊ฐ๋ฐํ๊ณ ๋ค๋ฅธ ๊ณณ์์ ๋ฌธ์ ๋ฅผ ๊ฒฉ๋ฆฌํ๋ ค๊ณ ์๋ํ๋ ๋์ ๋์์ด ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋ฐฉ๋ฒ์ด ์ค์ ๋ก ๋ฐํ์ ๋ฒ๊ทธ๋ฅผ ์ผ์ผํค๋ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ๋๋ก ๊ฒฝ๊ณ ๋ฅผ ๋ฐ๊ณ ์ถ์ต๋๋ค. ๊ฐ๋ฐ์ฉ์ผ๋ก๋ง ์ด ๊ธฐ๋ฅ์ ํ์ฑํํ ์๋ ์์ง๋ง ๋น๋ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด ๋ฌธ์ ์๋ ์ฌ์ ํ "์ถ๊ฐ ํผ๋๋ฐฑ ๋๊ธฐ ์ค"์ด๋ผ๋ ๋ ์ด๋ธ์ด ๋ถ์ด ์์ผ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ด ๋ ์์ต๋๋ค.
์๋ก์ด ์ํคํ ์ฒ ๋ฐฉํฅ์ ๋น ๋ฅด๊ฒ ํ๋กํ ํ์ดํํ ๋ TypeScript์ ์๋ด์ ๋ฐ๋ผ ์๋ก์ด ์ํคํ ์ฒ๊ฐ ์๋ํ๋์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฌ๋ ์คํํ๋ ๋์ ์ผ์์ ์ผ๋ก ๋จ์ ํ ์คํธ ํ์ผ์ ์ ํ ์ค๋ฅ๋ฅผ ๋ฌด์ํ๊ณ ์ถ์ต๋๋ค.
๊ฐ ํ์ผ์ ์๋จ์ ์ผ์ข
์ @ts-ignore-
์ฃผ์์ ์ถ๊ฐํ๋ ๊ฒ์ ์ถฉ๋ถํ ์ฌ์ธ ๊ฒ์
๋๋ค.
๋๋ @kumar303 ์ ํ์์ฑ์ ๋ ๋ฒ์งธ๋ก: ๋จ์ ํ ์คํธ์์ ์ฃผ์ด์ง ๋ธ๋ก/ํ์ผ์ ๋ํ ์ผ๋ถ ๊ฒ์ฌ๋ฅผ ๋๋ ๊ฒ์ด ์ ์ตํฉ๋๋ค. ์๋ํ๋ฉด ๊ทธ๋ฌํ ๊ฒฝ์ฐ๋ฅผ ๋ค๋ฃฐ ์ฃผ์ฅ์ด ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
@weswigham ์ปดํ์ผ๋ฌ ํ๋๊ทธ ๋ค์ ๋ฃ์ ์ ์์ต๋๋ค.
์ปดํ์ผ๋ฌ ํ๋๊ทธ ๋ค์ ๋ฃ์ ์ ์์ต๋๋ค.
ํ์ ์์ - 3.7 ๋ฒ ํ ๋ฒ์ ์ ๋๋ค.
re: https://github.com/microsoft/TypeScript/pull/33383 : @weswigham ํ๋ฅญํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค! ์ฌ๊ธฐ์ ๊ฐ๋ ฅํ ์ฌ์ฉ ์ฌ๋ก๋ ํ์ผ์์ ์ ํ ๊ฒ์ฌ๋ฅผ ์ผ์์ ์ผ๋ก ๋ฌด์ํ๋ ๊ฒ์ด๋ฏ๋ก @ts-nocheck
์ ๊ฑฐ๋ฅผ ์์์ ๋ ์คํจํ๋ ๋ฆฐํธ ๊ท์น๋ ์ ๊ณตํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
.jsx
ํ์ผ์์๋ ์ ์ graphQL ์ฟผ๋ฆฌ๊ฐ ์๋ํ์ง๋ง .tsx
ํ์ผ์์๋ ์๋ํ์ง ์๋ gatsby์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด ์ ์์ด ๋ ์์ฉ ๊ฐ๋ฅํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. (์ฌ๊ธฐ https://github.com/AdamLeBlanc/gatsby-plugin-ts-loader/issues/5์์ ๋ฐํ)
์ด๋ด!
์ ์๋ ์๋ฃจ์
์ด ๊ตฌํ๋์์ต๋๊น?
// @ts-ignore-start
// @ts-๋ฌด์ ์ข ๋ฃ
๋งค์ฐ ์ ์ตํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๋ํด ์ ๊ฒฝ ์ฐ์ง ์์ ๊ฒ์ ๋๋ค.
3.7์์ ์ ์ฒด ํ์ผ์ ๋ชจ๋ ์ค๋ฅ๋ฅผ ์ต์ ํ๊ธฐ ์ํด //@ts-nocheck
์ ๋ํ ์ง์์ ์ถ๊ฐํ์ต๋๋ค. ์ค ์์ค ๋ฐ ํ์ผ ์์ค ์ต์ ๊ฐ ํฐ ์๋ ์์ด _๋๋ถ๋ถ์_ ์๊ตฌ ์ฌํญ์ ํฌํจํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฒดํฌ๋ฅผ ํด์ ํด์ผ ํ๋ ์ฒดํฌ๋ ํ์ผ ๋ด์ ์ถฉ๋ถํ ํฐ ๋ธ๋ก์ด ์๋ ๊ฒฝ์ฐ, ์ ์ฒด ํ์ผ์ ๋ํ ์ฒดํฌ๋ฅผ ๋นํ์ฑํํ๊ฑฐ๋, ๋ถ์พํ ๊ฒฝ์ฐ ์ฒดํฌ๋์ง ์์ ์ฒญํฌ๋ฅผ ์์ฒด ํ์ผ๋ก ์ถ์ถํ๊ณ ํด๋น ํ์ผ์ ๋ํ ์ฒดํฌ๋ฅผ ๋นํ์ฑํํ๊ฑฐ๋, ์คํจํ๋ฉด, ์ค์ ๋ฌธ์ ๊ฐ ์๋ ๊ฐ ์ค์ ์ต์ ํ์๊ฒ ์ต๋๊น? ts-ignore
๋ ๋จ์ผ ๋ฌธ์ ๋ฅผ ๋ฌด์ํด์ผ ํ๋ ๋ฐ๋ฉด ts-nocheck
๋ ๋จ์ผ ํ์ผ์ ๋ฌด์ํด์ผ ํฉ๋๋ค. ๋ฒ์ ๊ธฐ๋ฐ ์ต์ ๋ ์ค์ ๋ก ์ด๋ค ์์ผ๋ก๋ ํน์ ๋จ์์ ๋งคํ๋์ง ์์ผ๋ฏ๋ก ์ด๋ป๊ฒ ๋ ๋ ๋๋น ๋ณด์
๋๋ค (๋จ์ผ ๋ฌธ์ ๋๋ ์ต์ ํ๋ ๊ทผ๋ณธ ์์ธ์ ๋งคํ ํ ์ ์๊ธฐ ๋๋ฌธ์). ์ ์ด๋ ์ค๋ฅ ์ฝ๋ ํน์ ์ต์ ๊ฐ ์์ผ๋ฉด ๋ฒ์ ๊ธฐ๋ฐ ์ต์ ๊ฐ ํนํ ํธํ์ง ์์ต๋๋ค.
๋๋ ์ ์ด๋ ํ์ผ ์๋จ์ ๋จ์ผ ์ต์ ( //@ts-nocheck File is a legacy untyped UMD module concatenated into the build - declarations are pulled from node_modules, so errors here are hopefully meaningless
) ๋๋ ๊ฐ๋ณ ๋์ ๊ฒ(tm)์ ๋ํ ๊ฐ๋ณ ์ต์ ( //@ts-ignore The TS compiler doesn't support the assignment on the next line because we never declare it, but we provide this for legacy compat
)๋ฅผ ์ ํธํฉ๋๋ค. ๋๋ ํ์ ๋์ "์ฌ๋ฌ ์ฐ์์ ์ธ ์ฐ๊ธฐ ๊ธฐ๋ณธ์ ์ผ๋ก TypeScript์์ ์ต์ ๊ธฐ๋ฅ์ ์ฌ์ฉํด์๋ ์ ๋๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์ ๋ ์ด์ ๋ํด _์ ๋ก_ ๊ณต๊ฐํฉ๋๋ค. ์ ํ ๋ฌธ์ ์ธ ๊ฒฝ์ฐ ์ด๋ฅผ ์บ์คํธํ ์ ์์ต๋๋ค(๊ทธ๋์ any
, ์บ์คํธ ๋ฐ ์ฝ์ ๋ชจ๋ ์ ์ธ์ด ์กด์ฌํจ). ๊ตฌ๋ฌธ ๋ฌธ์ ๋ผ๋ฉด ๋ชจ๋ ๊ฒ์ด ๋์ฐํ๊ณ ์ด์จ๋ ๊นจ์ง ๊ฒ์ด๋ฏ๋ก ์ต์ ๋ ์๋ฌด ์์
๋ ์ํํ์ง ์์ต๋๋ค(์ต์ ์์
์ ๊ตฌ๋ฌธ ๋ถ์ ์ค๋ฅ์ ์ํฅ์ ๋ฏธ์น์ง ์์).
//@ts-nocheck
๊ฐ์ฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ฝ๋ ๋ธ๋ก ๊ฒ์ฌ๋ฅผ ๋นํ์ฑํํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํฉ๋๋ค.
const $element = document.createElement('iframe')
$element.loading = 'lazy' // Property 'loading' does not exist on type 'HTMLIFrameElement'.
// @ts-nocheck
ํฅ๋ฏธ๋ก์ด ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ช ๋ น๋ฌธ์ DDL๋ก ์ปดํ์ผํ๋ Typescript๋ก ORM์ ๊ตฌ์ถํ๊ฑฐ๋ ์์ ํ๊ณ ์์ต๋๋ค.
Where ์ฟผ๋ฆฌ๋ฅผ ์ํํ๋ ค๋ฉด ๋ฒ์ ๋ณ์๋ฅผ ์ ๋ฌํด์ผ ํฉ๋๋ค.
.entities
.include('parent')
.where(m => m.id === this.id, { id: this.entityId })
.toList()
์ด๊ฒ์ ๋จ์ํ Property 'id' does not exist on type 'xxx'
๋๋ฌธ์ ์๋ํ์ง ์์ต๋๋ค.
@ts-ignore-start
๋ก ๋ํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ ์๋ํฉ๋๋ค.
// @ts-ignore-start
.where(m => m.id === this.id, { id: this.entityId })
// @ts-ignore-end
๊ทธ๋ฌ๋ ํ์์ด ์ง์ ๋๊ณ ์ค ๋ฐ๊ฟ์ ์ถ๊ฐํ๊ธฐ ์์ํ๋ฉด:
// @ts-ignore-start
.where(m => m.id === this.id || m.id === this.id2, {
id: this.entityId,
id2: this.entity2Id
})
// @ts-ignore-end
๋ ์ด์ ์๋ํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ๋จ์ํ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ์๋ํ์ง ์์ต๋๋ค.
๊ทธ๊ฒ์ด ๋ฐ๋ก ์ ํ ์์ค ์ค๋ฅ์ ์ข
๋ฅ์
๋๋ค. ์ ๋ง๋ก ๊ทธ๊ฒ์ ์ต์ ํ๊ณ ์ถ๋ค๋ฉด ์ก์ธ์ค์ ๋ํด as any
์บ์คํธ(๋๋ jsdoc์์๋ /** <strong i="8">@type</strong> {any} */(expr)
)๊ฐ ์์ด์ผ ํฉ๋๋ค.
//@ts-nocheck
๋ ๋ด ts angular ํ๋ก์ ํธ์์ ์๋ํ์ง ์์ง๋ง //@ts-ignore
๋ ์๋ํฉ๋๋ค. ๋ง์ดํฌ๋ก์ํํธ๋ฅผ ์ํ ์ด๋ฒ ํธ๋ 2017๋
์ ์์๋์์ต๋๋ค. 2017๋
! ์...
3๋ ์ด ์ง๋ ์ง๊ธ ํด๊ฒฐ์ฑ ์ด ์์ต๋๋ค. JavaScript ๊ฐ๋ฐ์๊ฐ typescript๋ก ์ ํํ๊ณ ์ถ์ดํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ผ์ด ์ผ์ด ์๋๋๋ค.
// @ts-ignore-start // @ts-ignore-end
๋ค์๊ณผ ๊ฒฐํฉ ๊ฐ๋ฅ: #19139
// @ts-ignore-start Property_0_does_not_exist_on_type_1 // @ts-ignore-end (possible include the error type again so you can turn be more specific of where you want to ignore some errors
@marianturchyn ์ด๊ฒ์ tslint๊ฐ ์๋๋๋ค.
์ด๋ฅผ ๊ตฌํํ ๊ณํ์ด ์์ต๋๊น?
// @ts-nocheck
ํ์ฌ ์ ์ผํ ์ต์
์
๋๋ค :(
์ฌ๊ธฐ์์ ๊ณ ๋ คํ๊ธฐ ์ํด ์ถ๊ฐํ ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก...
์ ๋ ๋ช ๊ฐ์ง ๊ธฐ๋ณธ์ ์ธ ์ ์ด ํ๋ฆ๊ณผ ์กฐ๊ฑด์ ํ์ฉํ๋ ์ฌ๋ด ๋งํฌ์ ์ธ์ด์์ ๋ง์ TypeScript ์ฝ๋๋ฅผ ์์ฑํ๋ ์ฝ๋์ ๋๋ค. ์ฝ๋ ์์ฑ ๋์์ ์ ์ดํ๋ โโ๋์ ์ฝ๋ ์์ฑ๊ธฐ์ ์ ๋ฌ๋๋ ์ ๋ ฅ์ ์ ์ดํ์ง ์์ต๋๋ค(์ต์ข ์ฌ์ฉ์์๊ฒ ๋ฌ๋ ค ์์).
๊ฒฐ๊ณผ์ ์ผ๋ก ์์ฑ๋ ์ฝ๋์๋ ์ฝ๊ฒ ์ฐ๊ฒฐํ ์ ์๋ ์ฝ๋๊ฐ ์๊ฑฐ๋ ์ด๊ฑฐํ ์์์ ๋ํด ๊ฐ์ ํ ์คํธํ๋ ์ค์ฒฉ ์ฝ๋๊ฐ ์์ ์ ์์ผ๋ฏ๋ก TS2367์ ๊ฒฝ์ฐ ํด๋น ๋ธ๋ก ๋ด๋ถ์ ๋ค๋ฅธ ์ด๊ฑฐํ ์์์ ๋ํ ํด๋น ๋ณ์์ ๋ ๋ค๋ฅธ ๊ฒ์ฌ๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด:
if (foo === MyEnum.ONE) {
const bar = (foo === MyEnum.TWO ? "two" : "one");
}
์์ผ๋ก ์์ฑํ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ํจํด์ ์ฝ๊ฒ ์์ ํ๊ณ ํผํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฝ๋ ์์ฑ์์๋ ๋ถ๊ฐ๋ฅํ ๊ฐ์ ๋ถํ์ํ๊ฒ ํ ์คํธํ๋ ์ ๋ ฅ์ ์ ๊ณตํ์ง ์๋ ๊ฒ์ ๋ด ์ฌ์ฉ์(๊ฐ๋ฐ์, ์ ํ์ ์๊ณ ์์ต๋๋ค!)์ ๋ชซ์ ๋๋ค.
ํ์ ๊ฒ์ฌ๋ฅผ ์์ ํ ๋นํ์ฑํํ๊ณ ์ถ์ง๋ ์์ง๋ง ์ด ์ค๋ฅ๋ก ์ธํด ์ฝ๋ ์์ฑ ์ฝ๋๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ค๋ฅธ ๋ฉ์ปค๋์ฆ์ด ์์ต๋๋ค. ์ด์์ ์ผ๋ก๋ ๋ชจ๋ ์ฝ๋ ์์ฑ ํ์ผ์ ๋ํด ์ด ์ค๋ฅ ํ๋๋ฅผ ํ์ํ์ง ์๊ณ ๋ค๋ฅธ ๋ชจ๋ ์ ํ ๊ฒ์ฌ๋ ์ ์งํฉ๋๋ค.
๊ทธ๋๋ก ๋ชจ๋ ์ ํ ๊ฒ์ฌ๋ฅผ ๋๋ ๊ฒ ์ธ์๋ ํด๊ฒฐ์ฑ ์ด ์์ต๋๋ค. ์ด๋ ์์ ์์ TypeScript์ ์ผ๋ฐ JavaScript์์ ๋ง์ ๊ฐ์น๋ฅผ ์ป์ง ๋ชปํ๊ณ ์์ต๋๋ค.
์ง์ฌ์ด์ผ? ์ด๊ฒ์ ์ฌ์ ํ โโ๋ฏธํด๊ฒฐ ๋ฌธ์ ์ด๋ฉฐ TS4์์ ๊ตฌํ๋์ง ์์ต๋๊น? ๐คฆ๐ฝ
@ivnnv TS 3.9์์ // @ts-expect-error
๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
@ndraiman @ts-expect-error
๊ฐ๋ณ ๋ผ์ธ์ ๋ํด์๋ ์๋ํ์ง๋ง ๋ธ๋ก ์๋ ์๋ํ์ง ์์ผ๋ฏ๋ก "๋ธ๋ก์ ๋ฌด์"ํ๋ ค๋ฉด ๋ง์ ๋ผ์ธ์ ๋ฐฐ์นํด์ผ ํฉ๋๋ค.
๋ ๋ฌด์์ด ํ์ํฉ๋๊น? ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ์ปค๋ฎค๋ํฐ์์ ๋ฌด์์ ํด์ผ ํฉ๋๊น?
์ด์ ๋ํ ๊ฐ์ฅ ์ข์ ์ฌ์ฉ ์ฌ๋ก๋ ๋ง๋๋ ๋ชจ๋ ๋จ์ผ ์ ํ์ any
๋ฅผ ์ฐ๋ ๊ฒ์ ๋์์
๋๋ค. ๋น์ ์ ๋ฏธํ์ ๋ํด ๋์ ์ฌ์ด ์์ ์๋ ์์ง๋ง(๋ถ๋ช
ํ ๊ธฐ๋ถ๊ณผ ์์ฐ์ฑ์ ์ํฅ์ ๋ฏธ์น ๊ฒ์
๋๋ค), ์ผ๋ฐ์ ์ธ ๊ธฐ๋์ ์ผ์นํ๋ ๋์์ด ์๋ค๋ ๊ฒ๋ง์ผ๋ก๋ ๋ฐ์๋ค์ด๋ ๊ฒ์ด ์ด๋ ต์ง ์์ ๊ฒ์
๋๋ค.
์ฌ๋๋ค์ ๋ฐ์๋ค์ผ ์ ์๋ ๊ฒ๊ณผ ๊ทธ๋ ์ง ์์ ๊ฒ์ ๋ํด ์๋ก ๋ค๋ฅธ ๊ฒฌํด๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด๋ค ์ฌ๋๋ค์๊ฒ๋ ๋๋ฌด ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๊ณ ์ฝ๋ ํฌํ
๊ณผ ๊ฐ์ ์ผ์์ ์ธ ์์
์ ์ํํ๋ ๋์ ์ฌ๋๋ค์ด ๊ฐ์ง ์ ์๋ ํ๋ฆ ์ํ๋ฅผ ์ ํํฉ๋๋ค.
๋ฌด์๋ ์ฝ๋ ๋ธ๋ก์ ๊ฐ์ง ์ ์๊ณ ๋์ any
์บ์คํธ๋ก ์ฐ๋ ๊ธฐ๋ฅผ ๋ฒ๋ ค์ผ ํ๋ค๋ ๊ฒ์ด ์ง์ฆ๋๊ณ ์ด์ํฉ๋๋ค. ์ด๋ ์ข
์ข
๊ฐ๋
์ฑ์ ํด๋ก์ด ์ํฅ์ ๋ฏธ์นฉ๋๋ค(์ ์ ํ ์ ํ์ด ์์ ๋๊น์ง). ๊ณ์ํด์ ์๋ก์ด ์ฃผ์์ ์์ฑํด์ผ ํ๊ฑฐ๋ ์ฃผ์๋ฅผ ์ฐ๋งํ๊ฒ ๋ง๋๋ ๋ฐ ํ๋ํ๋ ๊ฒ์ _๋๊ตฐ๊ฐ๊ฐ ์ฝ๋ ๋ธ๋ก์ ๋ฌด์ํ๋ ์ด์ ์ ๋ณด์ง ๋ชปํ๋ค๋ ์ด์ ๋ก _ ์ ๊ด์ ์์๋ ์ณ์ง ์์ต๋๋ค.
ํ๋๋ JS์์ TS๋ก ํ๋ก์ ํธ๋ฅผ ์ด์ํ๊ณ ๋ค๋ฅธ ํ๋ก์ ํธ๋ ํ์ฌ์์ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค.
์ด์๋ ํ๋ก์ ํธ์์ ๋ฐ๋ฅด๋ ๊ตฌ๋ฌธ ๋ฐ ๊ท์น์ ์๋ฅผ ๋ค์ด es2015์ ๊ฐ์ด ์ด์ ์ด๊ฑฐ๋ ๋ ๋ช ํํ ๊ตฌ๋ฌธ๊ณผ ๋ ์ ์ ์ฝ๋๋ฅผ ์ํด ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ ์ ์์ต๋๋ค.
์ด ํ๋ก์ ํธ๋ฅผ ์ด์ํ ๋ ์ผ๋ถ ์ฝ๋๋ TypeScript๋ก ์ด์ํ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ํ์ฐ์ ์ผ๋ก ๋ ๋ง์ ์ปจํ ์คํธ๊ฐ ํ์ํ๊ฑฐ๋ ํด๋น ์ ํ์ ์์ฑํ๊ธฐ ์ํด ํ๋์ ์๊ฐํด์ผ ํ๋ ์์์ ๋์์ ๊ฐ์ง ๋ถ์ธ ๋ฐ ํจ์๋ฅผ ํตํด ๋ฐ์ฏค ์๊ฐํ๊ฒ ๋ฉ๋๋ค.
ํ์ผ์ ์์ ํ๋ ๋์ ํ์ผ์ ๊ธฐ๋ฅ์ด๋ ์ฝ๋ ๋ธ๋ก์ ๊ฒ์ฌํ์ง ์๋ ๊ฒ์ ์ ๋ง ๋ฉ์ง ์ผ์ ๋๋ค. ์ฝ๋ ๋ธ๋ก์ ๋ฌด์ํ๋ฉด ์์ ์ด ์๊ณ ์๋ ์์ญ์ผ๋ก ๋น ๋ฅด๊ฒ ์ด๋ํ ์ ์๊ณ ๋์ค์ ์ฌ์ฉํ ํน์ ๋ถ๋ถ์ ์ ์ฅํ ์ ์์ต๋๋ค.
// @ts-check
๋ฅผ ์ ๊ฑฐํ๊ณ ์ถ๊ฐํ์ญ์์ค.// @ts-ignore-enable
... // @ts-ignore-disable
๊ฐ๋ณ ๊ธฐ๋ฅ ๋ฐ ๋ฒ๊ฑฐ๋ก์ด ์ฝ๋ ๋ธ๋ก๊ฐ์ฅ ํฉ๋ฆฌ์ ์ผ๋ก ๋ณด์ด๋ ๊ฒ์ ์ค์ค๋ก ๊ฒฐ์ ํ์ญ์์ค. ๋ ๋ง์ ESLint ๊ท์น์ด ์๋ ํ๋ก์ ํธ์ JS๋ฅผ ์ด์ํ ๋๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ฉฐ ๋๋ถ๋ถ์ ํญ๋ชฉ์ ๋ฆฌํฉํ ๋งํด์ผ ํฉ๋๋ค.
์ถ์ : ์ด ๋๊ธ์ ํ์ธํ์ ๋ ์ ์ ๋ค๋ฅธ ๋ง์ ์ฌ๋๋ค์ด 2017๋ ๋ถํฐ ์ฐพ๋ ๊ฒฝํ์ ์ป๊ธฐ ์ํด 20๋ถ ์ด์์ ๋ณด๋๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ๊ณง 3๋ ์ด ์ง๋ ๊ณต๊ฐ ๋ฌธ์ ์ ๋ํด ๋ ผํํ๊ธฐ ์ํด์์ ๋๋ค.
@wswigham @RyanCavanaugh
์๋ฆผ:+1:
๋ง์๋ค์ ์ฃผ๋ ๋๊ฐ๋ก
@agusterodin ๋น์ ์ ํฌ์์ด ์ ๋น๋ค์ ๋๊ธธ์ ๋๋ค.....
์ข์, ๋๋ ๋จ์ง ๊ฐ๋จํ PR์ ์ ๊ณตํ๋ ๊ฒ์ ์ ์ธํ๊ณ ๋ ์ค์ ๋ก ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์๋๋ค :)
๊ทธ๋ฌ๋ ๊ฐ์ธ์ ์ผ๋ก TS ํ์ ์๊ฒฌ์ ์ ๊ทน ๋์ํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์
์์ ์ด๋ฏ๋ก @ts-ignore-enable
(๋๋ @ts-ignore-start
์ฌ์ฉํ์ง ๋ง๊ณ ํญ์ @ts-ignore
์ฌ์ฉ์ ํผํด์ผ ํฉ๋๋ค. , ๋ฌด์์ด๋ ).
ํ์ง๋ง ๊ฐ๋์ ์๋ด์ drinking posion to satisfie thirst
๊ฐ ์์ต๋๋ค. ๋์ ์ ํ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๊ผญ ํ์ํ ๊ฒฝ์ฐ์
๋๋ค.
ํธ์ง: ์ค๋ช
๋ฐ ์์ ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์ด PR ts-ignore-enable
๋ฐ ts-ignore-disable
๋ ๊ฐ์ ์ง์๋ฌธ์ ์ถ๊ฐํฉ๋๋ค.
... <-- this is normal
// @ts-ignore-enable
XXX <-- this is ignored
... <-- this is ignored
// @ts-ignore-enable
XXX <-- this is ignored
// @ts-ignore-enable <-- you could remove this line.
YYY <-- this is ignored
// @ts-ignore-disable
ZZZ <-- this is normal
// @ts-ignore-disable <-- you could remove this line.
// @ts-ignore-disable
๋ ๋จ๋
์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์์ต๋๋ค.
@ts-expect-error
๋ ๋ฌด์๋ ์์ญ์์ ์๋ํ์ง ์์ต๋๋ค.
// @ts-ignore-enable
XXX <-- this is ignored
// @ts-expect-error <-- No error message. whatever next line has error or not.
YYY <-- this is ignored
// @ts-ignore-enable A
XXX <-- this is ignored
// @ts-ignore-enable B <-- you could remove this line.
YYY <-- this is ignored
// @ts-ignore-disable B
ZZZ <-- this is normal
// @ts-ignore-disable A <-- you could remove this line.
์๋ฒฝํ ์ธ์์์๋ ์ ํ ์์ ์ฑ์ ๋ฌด์ํ ํ์๊ฐ ์๊ฒ ์ฃ ? :๋_๋ฏธ์:
์๋ฅผ ๋ค์ด, ๋ด๊ฐ ์ํ๋ ๋๋ก ์
๋ ฅํ๊ฑฐ๋ ์
๋ ฅํ์ง ์์ ๊ฐ๋ SO ๋ต๋ณ๊ณผ ๊ฐ์ ํ์์ ์ธ ์์
์ ๋ณต์ฌํ ๋ ํ์ํฉ๋๋ค. ๋๋ถ๋ถ ๋ด ์ค์ ์ ๋ฐ๋ฅด๋ ๋ด ์ ํ ์์ ์ฝ๋์ ์์ต๋๋ค. ๋๋ ๋งค์ฐ ์๊ฒฉํ ์ค์ ์ ์ฌ์ฉํ๊ณ ์ข
์ข
๊ทธ ๋๋ฌธ์ ํจ์๋ ์ผ๋ถ ๋
ผ๋ฆฌ๋ฅผ ๋ค์ ์์ฑํด์ผ ํฉ๋๋ค. ๊ทธ ์ฝ๋ ๋ธ๋ก์ ๊ณ์ ๋ฌด์ํ๊ณ ์ถ๊ธฐ ๋๋ฌธ์ด ์๋๋๋ค. ๊ทธ๊ฒ์ ๋ง์ด ๋์ง ์์ต๋๋ค.
์ฝ๋ ๋ธ๋ก์ ๋ฌด์ํ๋ ๊ฒ์ ํธ๋ฆฌํ๋ฉฐ, ๋ธ๋ก์ ๋ชจ๋ ๋ผ์ธ์ @ts-ignore
ํ ์ ์๋ค๋ ์ฌ์ค์ ๊ฐ์ํ ๋ ์๋ฒฝํ๊ฒ ํฉ๋ฆฌ์ ์ผ๋ก ๋ณด์
๋๋ค.
I'll just ignore this because it's easier
๋ก ๊ฐ๋ ์ฌ๋๋ค์๊ฒ ์ด๊ฒ์ด ๋ฏธ์น ์ ์๋ ์ํฅ์ ์ดํดํฉ๋๋ค. ๋ด๊ฐ ๋ณด๊ธฐ์ drink poison to satisfy their thirst
๋ฅผ ๋ฌด์ํ๋ ๋ธ๋ก ๋ฒ์๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ฌ๋์ ์ด๋ฏธ @ts-ignore
๋ก ๋
ํ ๋ฐฉ์ธ์ ๋ง์๊ณ ์์ต๋๋ค.
์ด์ .ts
@ts-nocheck
๋ฅผ ์ํํ ์ ์์ผ๋ฏ๋ก $ .ts
@ts-check
๋ฅผ ํ์ฉํ์ฌ ์ ํ ๊ฒ์ฌ๊ธฐ๋ฅผ ์ผ๊ฑฐ๋ ๋ ์ ์์ต๋๋ค.
import fs from 'fs'
fs.readFileSync(32423) // type checking
// @ts-nocheck
fs.foobarbaz() // type checking is off
fs.__randomThing()
// @ts-check
fs.readFileSync(123) // now type checking again
์ด๊ฒ์ "์ฝ๋ ๋ธ๋ก"์ด ๋ฌด์์ธ์ง ์ ์ํ ํ์๊ฐ ์์ต๋๋ค. -์์ ๋ชจ๋ ํ๊น์ง ์ ํ ๊ฒ์ฌ๋ฅผ ์์ ๋ฐ ์ค์งํ ์ ์์ต๋๋ค.
์ ๋ฐ์ดํธ ๋ด๊ฐ ์๋ชปํ์ต๋๋ค. ์์ ์ฌํญ์ https://github.com/microsoft/TypeScript/pull/40267#issuecomment -713840095๋ฅผ ์ฐธ์กฐํ์ธ์.
styled-components
๋ฅผ ์ฌ์ฉํ๋ ์ฑ์ TypeScript๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ค๊ณ ํ ๋ (์ด๋ค ์ด์ ๋ก) ํ
ํ๋ฆฟ ๋ฌธ์์ด ์์ @ts-ignore
๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.ignore-block์ผ๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค.
๋ฌด์ํ๋ ค๊ณ ํ๋ TS ์ค๋ฅ์ ์:
import styled from "styled-components";
import { Button } from "...";
// @ts-ignore here does not work
const StyledNavBar = styled.div`
${Button} {
margin: auto 0;
}
`;
์ถ๊ฐ ์ฐธ๊ณ ์ฌํญ: TS ํ๋ก์ ํธ์์ ์บ์คํธํ ์ ์์ผ๋ฉฐ ๋ชจ๋ ์ ํ์ ํ์ฉํ์ง ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ถ์ฒ์?
@weswigham ๋ฏธํ์ ๋งฅ๋ฝ์์ ํ๋ฆ ์ํ ๋ฐ ์์ฐ์ฑ์ ๋ํ ๊ทํ์ ์๊ฐ์ ๋ฌด์์ ๋๊น? ๋น์ ์ ํผ๋๋ฌผ์ ๋ํด ๋์ ์ฌ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ฐ์ฑ, ์ฝ๋ ์ด์ ๋ฐ ๋ด๊ฐ ์ค๋ช ํ ํ๋ก์ธ์ค์ ๋ํ ๊ฐ๋ ์ด ์์ต๋๊น? ๋ด ์๊ฒฌ์ ๊ณ ๋ คํ ํ์๋ ๋ ์์ฐ์ ์ด๋ผ๋ ๋งฅ๋ฝ์์ ์ฌ์ ํ ์ด๋ค ์ด์ ๋ _์ ํ__ ๋๋ผ์ง ๋ชปํฉ๋๊น? ๋ํ ๋ธ๋ก ๋ฒ์๋ฅผ ๋ฌด์ํด์ผ ํ๋ ์ค์ ์ํฉ์ ๋ํด์๋ ์ค๋ช ํ์ต๋๋ค. ๋ํ ์ด ๊ธฐ๋ฅ์ด ESLint ๋ฐ ์ฐ๋ฆฌ๊ฐ ๊ธฐ๋ํ๋ ๊ธฐ๋ฅ๊ณผ ์ด๋ป๊ฒ ๋น๊ต๋์ง ์์ต๋๊น?
์ค๋จ์ด ์ ์์๋ก ์์ฐ์ฑ์ด ์ฆ๊ฐํ๊ณ ํจ์จ์ฑ์ด ํฅ์๋๋ค๋ ๊ฒ์ด ๊ณผํ์ ์ผ๋ก ์ ์ฆ๋์์ต๋๋ค . ๋ธ๋ก ๋ฒ์ ๋ฌด์๋ ์ฝ๋๋ฅผ ์ด์ํ ๋ ๋ ์ ์ ์ค๋จ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. TS ํ์ "๊ธฐ๋ณธ์ ์ผ๋ก TypeScript์์ ์ต์ ๊ธฐ๋ฅ์ ์ฌ์ฉํด์๋ ์ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค."๋ผ๋ ์ฌ์ค์ ๊นจ๋ซ์ง ๋ชปํฉ๋๊น? ๋ ์ด์ ์๊ณ ์จ์ฌ๋ TypeScript์ ๊ธฐ๋ฐํ ์๊ฒฌ์ด๋ฉฐ ํ์ค ์ธ๊ณ์์๋ ์ฌ๋๋ค์ด ๋ ๋ง์ ์ ํ ์์ ์ฑ ๋ฐ ๊ธฐํ ๋ฆฐํธ ๊ท์น์ ์ฌ์ฉํ์ฌ ์ ๋๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ๋ค๋ฅธ ์ฝ๋๋ฒ ์ด์ค๋ก ์ด์ํด์ผ ํ๋ค๋ ์๊ฒฌ์ ๋๋ค. ์ด๋ฌํ ์ํฉ์์๋ ํ์ผ์ด๋ ์ค์ ๋ฌด์ํ ์ ์์ง๋ง ๋ฐฉ๊ธ ๊ฐ์ ธ์จ ์ฝ๋ ๋ธ๋ก์ ๋ฌด์ํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋ด๊ฐ ๋ณด๊ธฐ์ ํ์ค์ ๋ฌด์ํ๊ณ ์ ํ ํผ์๋ฅผ ํฅํด ๊ฐ๊ณ ์๋ ๊ฒ ๊ฐ๋ค. @sandersn ๋น์ ์ ๋ด ์์ ์ ๋ค๋ฃจ์ง ์์๊ณ ์ฌ๊ฑด์ ์๋ก์ด ํ ๋ก ์ ๋ํด ์ด์ ๋ต๋ณ์ ๋ณด๋ฅํ์ต๋๋ค. ๋ํ ํ์์ ๋ฌ๋ฆฌ ๊ฒฐ์ ํ์ง ์๋ ํ ๊ตฌํํด์๋ ์ ๋๋ค๊ณ ๋ช ์ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ์๊ฒ ์ต๋๊น?
๋น์ ์ด ํ์๋ก ํ๋ ์๊ฒฐ์ฑ์ ์ ๊ณตํ ์ ์์ด ์ ๊ฐ์ด์ง๋ง ํ์ค์ "์๋ง๋ ๋์ค์"๋ผ๋ ๋๋ต์ด ๋น์ ์ด ํจ๊ป ์ด์๊ฐ๋ ๋ฒ์ ๋ฐฐ์์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ฃผ์ด์ง ๊ธฐ๋ฅ์ ๋ด์ผ ์ ํ์ ์๋๋ฅผ ์ ์์ผ๋ฉฐ, ์ฐ๋ฆฌ์ ์ค๊ณ ๋งค๊ฐ๋ณ์์ ์ํ๋ ๊ธฐ๋ฅ์ ๋ํด ์ธ์ฒด ๊ณตํ์ ์ธ ๋ฐฉ์์ผ๋ก ์ ํ์ ์ถ๊ฐํ ์ ์๋ ๋ฅ๋ ฅ์ ๋๊ณ ๊ฒฝ์ํ๋ ์์ฒ ๊ฐ์ ์ ์์ด ํ์ฌ ์ด๋ ค ์์ต๋๋ค. ์ ์ฉํ๊ณ ์์ ์ ์ด๋ฉฐ ์ง๋ณด์ ์ ๋๋ค.
์ฐ๋ฆฌ๋ ํ์ฌ ํผ๋๋ฐฑ, ํ์ฌ ์๋ฃจ์ ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ํ, ์ด๋ฌํ ์๋๋ฆฌ์ค์ ์ฐ์ธ, ๋๊ตฌ ๋ฐ ๊ธฐํ ์๋ฐฑ ๊ฐ์ง ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฐ์ ์์๋ฅผ ์ง์ ํฉ๋๋ค. ํ์ฌ ์ฐ์ ์์๊ฐ ๋์ง ์์ ๊ฒ์ด ๋์ค์ ์ฐ์ ์์๊ฐ ๋์ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ด "์๋ง๋ ๋์ค์"์ ์ฑ๊ฒฉ์ด๋ฉฐ ์ด๊ฒ์ด ์ด ์ ์์ด ์ด๋์ ์๋์ง๋ฅผ ์ ํํ๊ฒ ํํํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ์ฌ ์ฌ๊ธฐ์์ ๊ฒฐ์ ์ ํผ๋๋ฐฑ์ ๊ณ์ ๋ชจ๋ํฐ๋งํ๊ณ ์ฐ๋ฆฌ๊ฐ ๋ค์์ ์ถ๊ฐํ ์ ์๋ ๋ค๋ฅธ ๊ธฐ๋ฅ๋ณด๋ค ๋ ๋์ ์ฐ์ ์์๋ก ์ด ๊ธฐ๋ฅ์ ํ์๋ก ํ ์ ์๋ ์ฌ๋๋ค์ด ๋ฌด์์ ๊ฒช๊ณ ์๋์ง ์ดํดํ๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ ์ด์กฐ๋ ์์งํ ์ ๋์ ์ธ ๊ฒฝํฅ์ด ์๊ณ ๊ฐ์ธ์ ์ผ๋ก ๋งํ๊ณ ์ตํ ํต์ฒฉ์ ํฅํด ๋ฐ์ด๋ถ์ด๋ ๊ฒ์ ์ด๊ฒ์ด ๋์์ ๋นํด ๋ณต์ก์ฑ์ ๋ฅ๊ฐํ๋ ๊ฐ์น๋ฅผ ์ถ๊ฐํ๋ ๋ถ๋ถ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋๋ ๊ฑด์ค์ ์ธ ๋ํ์ ๋์์ด ๋์ง ์์ต๋๋ค.
์ตํํต์ฒฉ์ ํด์ ์ฃ์กํฉ๋๋ค. ๋๋ PR์ ํฅํ ํ๋์ ๋ณด๊ณ ๊ฝค ์ง์ฆ์ด ๋ฌ์ง๋ง ๋ฌธ์ ์ ๋ํด์๋ ์๋ฌด ๊ฒ๋ ์์์ต๋๋ค. ๋ด ์ด์ ์๊ฒฌ์ด ๊ฑด์ค์ ์ธ ๋ฐฉ์์ผ๋ก ๊ธฐ์ฌํ์ง ์๋๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.
์ด ๋ฌธ์ ๊ฐ ๊ธฐ๋ค๋ ค์ผ ํ ์๋ ์๋ค๋ ์ ์ ์ธ์ ํ ์ ์์ต๋๋ค. ๋ช ๊ฐ์ง ํผ๋๋ฐฑ์ ์ ๊ณตํ๊ณ ํด๊ฒฐ์ ๋ ๊ฐ๊น์์ง๊ธฐ ์ํด ํ์ํ ๋ค๋ฅธ ํผ๋๋ฐฑ์ด ๋ฌด์์ธ์ง ๋ฌผ์์ง๋ง ์๋ต์ ๋ฐ์ง ๋ชปํ์ต๋๋ค. ๊ทธ๊ฒ์ด ์๋ฌด๋ฆฌ ์ฑ๊ฐ์๋๋ผ๋ ๋ด ๋ค์ ๊ฑด์ค์ ์ด์ง ์์ ์๊ฒฌ์ ๋ด๊ฐ ํ์ผ๋ก๋ถํฐ _์ผ๋ถ__ ์๋ต์ ๋ฐ๊ธฐ ์ํด ํด์ผ ํ๋ ์ผ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋ช ๋ ์ด ์ง๋ 700๊ฑด์ด ๋๋ ๊ธ์ ์ ์ธ ๋ฐ์์ด ์๋ ๋ฌธ์ ์ ๋ํ ์ค์ ์งํ์ ์์ง ์ด๋ฃจ์ด์ง์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ ๋นจ๋ผ์ ธ์ผ ํ๋ค๊ณ ๋ ์๊ฐํ์ง ์์ง๋ง, ๋ฉค๋ฒ๋ค์ ๊ฐ์ธ์ ์ธ ์๊ฒฌ ์ด ์๊ธฐ ๋๋ฌธ์ ํ์ด ์ด ๊ธฐ๋ฅ์ ํ์ํ๋ ๋ฐ ๊ด์ฌ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ์ด ๋ชจ๋ ๊ฒ์ ์์ ํ ์ดํดํฉ๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์์ ๋ด๊ฐ ํ๋ ค๋ ๊ฒ์ ๊ทธ๊ฒ ์๋๋๋ค. ๋ํ๋ฅผ ์ข ํ๊ณ ์ถ์๋ฐ ๋ฌด์๋นํฉ๋๋ค.
๋ด ํผ๋๋ฐฑ์ด ๊ณ ๋ ค๋๊ณ ๊ทธ ์ฑ๊ฒฉ์ ๊ฐ์ํ ๋ ์๋ต๋์์์ ์๊ณ ์ถ์ต๋๋ค. ์งง์ ์๊ฐ์ ํ์ฑํ๋ ํ์ฑ PR์์ ๋ณผ ์ ์๋ฏ์ด ๊ธฐ๋ฅ ์งํฉ์ ํฐ ํผ๋์ด ์๋ ๊ฒ์ ์๋๋๋ค. ๋ชจ๋ ์ค๋น๊ฐ ์๋ฃ๋์์ผ๋ฉฐ ์ฌ๋๋ค์ ์ฐจ๋จ ๋ฌด์ ๊ธฐ๋ฅ์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๊ณ์ ๊ธ์ ์ ์ผ๋ก ๋ฐ์ํ๊ณ ์์ต๋๋ค. ์ ๋ ์ปค๋ฎค๋ํฐ๊ฐ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ฌด์์ ํด์ผ ํ๋์ง ๋ฌผ์์ต๋๋ค. ๋๋ ํ์์ ์ ๊ธฐ๋ ๋ช ๊ฐ์ง ์์ ์ ๊ฐ๋ ฅํ๊ฒ ๋์ํ์ง ์์ผ๋ฉฐ ์ด์ ๋ํด ๋ฐ๋ํ์ฌ PR์ ํ๊ณ '๋ง์์ด ๋ฐ๋์ง ์๋ ํ' ์๋ฌด๊ฒ๋ ๋ฐ๋์ง ์์ ๊ฒ์ด๋ผ๋ ์๊ฒฌ์ด ์ ๊ณต๋์์ต๋๋ค.
๊ฑฐ๊ธฐ์์ ๋ด ์ข์ ๊ฐ์ด ๋๋ฌ๋ฉ๋๋ค. ๋์ ๋ค๋ฅธ ์ฌ๋๋ค์ ํผ๋๋ฐฑ์ ์์ ํ ๋ฌด์ํ๊ณ ํ ๊ตฌ์ฑ์์ ๊ฒฐ์ ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๊ธฐ ๋๋ฌธ์ ์ค๋น๋ ๊ธฐ๋ฅ์ ๋ฌด์ํ๊ณ ์ถ์ต๋๋ค.
ํ์ ๋๊ตฐ๊ฐ๊ฐ _ํฉ์์ ๋ฐ๋ผ_ ๋ฌ๋ฆฌ ๊ฒฐ์ ํ์ง ์๋ ํ ์ด ๋ฌธ์ ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ด ํ์๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ปค๋ฎค๋ํฐ์์ ๋ ๋ง์ ํผ๋๋ฐฑ์ด ํ์ํ์ง ์์ต๋๊น? ๊ทธ๋์ ์ ๊ฐ ์ตํํต์ฒฉ์ ์๋ชปํ์ต๋๋ค.
๋๋ @weswigham ์ ์์ ์ ๋ํด ๋ช ๊ฐ์ง ์ฃผ์ฅ์ ํ๊ณ ๋ช ๊ฐ์ง ์๋ฅผ ์ ๊ณตํ์ผ๋ฉฐ ์์งํ ์ฌ์ ํ ๊ทธ๊ฒ์ ๋ํ ์ด๋ค ์ข ๋ฅ์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ๋์์ด ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ์ ์ผํ ๊ฒ์ ๋์ ๋๊ฒ ํ๋ฅผ ๋ด๊ณ ๊ฑด์ค์ ์ด์ง ์๋ค๋ ๊ฒ๋ฟ์ด์์ต๋๋ค.
์ฌ๊ธฐ์์ ์ด๋ป๊ฒ ์ด๋ํฉ๋๊น? ํ์ ์ด๋ค ํผ๋๋ฐฑ์ ์ํ ๊น์? "์ฐ๋ฆฌ๋ ํ์ฌ ํผ๋๋ฐฑ, ํ์ฌ ์๋ฃจ์ ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ํ, ์ด๋ฌํ ์๋๋ฆฌ์ค์ ์ฐ์ธํจ, ๋๊ตฌ ๋ฐ ๊ธฐํ ์๋ฐฑ ๊ฐ์ง ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฐ์ ์์๋ฅผ ์ง์ ํฉ๋๋ค." ๋ค์ ์จ๊ฒจ์ง ๊ฐ์ธ์ ์ธ ๋ฌธ์ ์ฒ๋ผ ๋ณด์ ๋๋ค. ์ฌ๋ฌ ์ฌ๋๋ค์ด ํ์์ _์ ํ_ ์๋ตํ์ง ์๊ณ ํผ๋๋ฐฑ์ ์ ๊ณตํ๋ ค๊ณ ์๋ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋๋ ์ฐ๋ฆฌ๊ฐ ์ฃผ์ ์์ ์ฌ๋๋ค์ ์๊ฒฌ์ ๋นผ๋ฉด ์ด๊ฒ์ด ๋์ ์ฐ์ ์์๊ฐ ์๋ ์๋ ์๋ค๋ ๊ฒ์ ์ดํดํ๋ค๋ ๊ฒ์ ๋ฐ๋ณตํ๊ณ ์ถ์ต๋๋ค. ๋์์ ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ ์ค๋น๊ฐ ๋์์ผ๋ฉฐ ์ฃผ์ฅ์ด ์ ๊ธฐ๋์์ต๋๋ค. ์ง๊ธ ํ์ํ ๊ฒ์ ํ์ด ๊ฒฐ์ /๋์์ ํ๊ณ (์๋ฌด๊ฒ๋ ๊ตฌํํ์ง ์์๋ ๋จ) ๊ณต๊ฐํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ด ํ์ํ ๊ฒ์ด ์๋๋ผ๋ฉด TypeScript์ _๋ชจ๋ _ ๊ธฐ๋ฅ์ด๋ ๋ฌธ์ , ํนํ ์ด ๋ฌธ์ ์ ๋ํ ์ฐ์ ์์๋ฅผ ๋์ด๋ ๋ฐ ๋ฌด์์ด ๋์์ด ๋๋์ง, ๋๋ ์ด๋ป๊ฒ ๋์์ด ๋๋์ง ์๋ ค์ฃผ์ญ์์ค.
์ฌ๋ฌ ์ค( @ts-ignore-start+@ts-ignore-end
) ๋๋ ์ธ๋ผ์ธ(์ /* @ts-ignore */
) @ts-ignore
์ ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก์
๋๋ค.
ํ๊ฒฝ:
"noUnusedParameters": true
require-jsdoc
๊ท์น์ ํ์ฑํํ์ต๋๋ค.type Data = Record<string, unknown>;
type PrepareSettings = Record<string, unknown>;
/**
* This is base class that will be inherited.
*/
class SuperClass {
/**
* Prepare data for further usage.
*
* <strong i="16">@param</strong> data
* Data that should be prepared.
* <strong i="17">@param</strong> settings
* Operation settings.
*/
prepareData(data: Data, settings: PrepareSettings): Data | undefined {
return data;
}
// Some additional methods...
}
์ค๋ช
๋ ์ํฉ์ ๋ํด TypeScript๋ 'settings' is declared but its value is never read.(6133)
๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค.
๋ฌธ์ ์ฃผ์ ๋์ @ts-ignore
๋ฅผ ์ถ๊ฐํ์ฌ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ง ์์ ์ ์์ต๋๋ค.
*/ // @ts-ignore
prepareData(data: Data, settings: PrepareSettings): Data | undefined {
๊ทธ๋ฌ๋ ๊ทธ ํ์ ESLint๋ Missing JSDoc comment
์ ๋ํด ๋ถํํ ๊ฒ์
๋๋ค.
๋ฐ๋ผ์ ์๋ฃจ์
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
*/ // @ts-ignore
prepareData(data: Data, settings: PrepareSettings): Data | undefined { // eslint-disable-line require-jsdoc
์ด์ํ๊ณ ์ถํ ๊ฒ.
@RyanCavanaugh @weswigham @sandersn
์ด๊ฒ์ด ์ปค๋ฎค๋ํฐ์์ TypeScript ํ๊ณผ ๋ ๋ ผ์ํ๊ธฐ๋ฅผ ์ํ๋ ์ฌํญ์์ ์๊ฐ ์๋ฆผ์ ๋๋ค. ๋ง์ ์ง์์ด ์์ผ๋ฉฐ ํ์ฌ ๋๋ฝ๋ ๊ฒ์ ํ์ ์๋ต์ ๋๋ค. ๋ง์ ์๊ฐ์ ํ๊ณ ์์ผ๋ฉฐ TypeScript๋ฅผ ๋ฐ์ ์ํค๋ ๊ฒ์ด ์ฌ์ด ์ผ์ด ์๋๋ผ๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค. ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. ์ด ์ ์์ ๋ ๋ฐ์ ์ํค๊ณ ๋ ์ง์ ์ ์ธ ์กฐ์น๋ฅผ ์ทจํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํ ์๋ต์ด ์๊ธฐ ๋๋ฌธ์ ์ ๊ธฐ์ ์ผ๋ก ์ด์ ๊ฐ์ ์๋ฆผ์ ๋ณด๋ด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋๋ ๊ฒฐ์ ์ด ๋ด๋ ค์ง ๋๊น์ง ํฌ๊ธฐํ์ง ์๊ณ , ๋๊ธ์ด ์ํฅ์ ๋ฏธ์น๋ ๊ฒ ๊ฐ์ต๋๋ค(๋๋ถ๋ถ !@#์ผ ๋).
๋ช ๋
์ด ์ง๋ ํ ์๋ ์ด ๊ธฐ๋ฅ์ด ์๋ค๋ ์ฌ์ค์ ๋๋์ง๋ง ๊ฐ์ธ์ ์ผ๋ก ์กฐ๊ธ ๋ค์ ์๊ฐํ์ต๋๋ค... @ts-ignore
์ ์์ฒญ๋ ๋ฌด๋ฆฌ๊ฐ ์์ ๋ ์ด๋ฏธ ๋ญ๊ฐ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ์ฝ๋๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ์ ๊ฐ์ ํ๋ ๋ฐ ์๊ฐ์ ํ ์ ํ์ญ์์ค. ์ฐ๋ฆฌ ๋ชจ๋๋ ๋๋๋ก ๊ฝค ๊ฒ์ผ๋ฅด๊ณ ์ ๋ฐ์ ์ผ๋ก ์๋๋ฅผ ์ํ์ง๋ง ํ์ฌ๋ ์ฌ๋ฌ @ts-ignore
๋ฅผ ๋ง์ ์ฝ๋ ๋ฌถ์์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๋ ๊ฒ๋ณด๋ค ๋ช ๊ฐ์ง ์ ์ ํ ์ ํ์ ํ์
ํ๋ ๊ฒ์ด ๋ ์ฌ์ด ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ๋ถํธํจ์ ๊ท ํ์ด ๊นจ์ง๋ฉด ์ฐ๋ฆฌ ์ค ๋ง์ ์ฌ๋๋ค์ด @ts-ignore-enable์ ํธ๋ฆฌํ๊ฒ ๋จ์ฉํ๊ฒ ๋์ด ์ฌ๊ธฐ์ ๊ธฐ์ ๋ชจ๋ ์์ ์คํ ์์ค ํ๋ก์ ํธ์ ์ ๋ฐ์ ์ธ ํ์ง์ด ์ ํ๋ ์ ์์ต๋๋ค.
Btw, ์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ์ ๋ํด ๋ง์ ๐ ๋ฐ์์ด ์์์ ์์ง๋ง - ํจ์ฌ ๋ ๋ง์ ์ฌ๋๋ค์ด ์นจ๋ฌตํ๋ ๋์ ์ด ๊ธฐ๋ฅ ์์ด ์์ ํ ๊ด์ฐฎ๊ฒ ๋๋ ์ ์๊ธฐ ๋๋ฌธ์ ํธํฅ๋ ์ ์์ต๋๋ค. ์๋ํ๋ฉด ๊ทธ๋ค์ด ์ฌ๊ธฐ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
@JerryGreen ๋ด ์ด์ ์๊ฒฌ์ ์ฐธ์กฐํ์ฌ ๋๊ฐ์ ๋ง์ ํ์ต๋๋ค. ๋ํ ์ฌ๋๋ค์ ์ด๋ฏธ ๋ฌด์ ๊ธฐ๋ฅ์ผ๋ก ์ด ์์ ์ ์ํํ๊ณ ์์ต๋๋ค. _none_ ์ด ์์ด์ผ ํ๋ค๊ณ ์ฃผ์ฅํ๋ฉด์ ์ฝ๊ฐ์ ๋ ์ ๊ตฌํํ ์ด์ ๊ฐ ์์ต๋๋ค.
@ts-ignore
๊ธฐ๋ฅ์ ์ ๊ฑฐํ๊ฑฐ๋ ์์ ํ ๊ธฐ๋ฅ์ผ๋ก ๋ง๋์ญ์์ค. ์ด๋ฅผ ์ํํ๊ธฐ ์ํ ๋ง์ ์ฃผ์ฅ์ด ์์ผ๋ฉฐ, ์๋ชป๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ์ฌ๋๋ค์ ๋ธ๋ก ๋ฌด์ ๊ธฐ๋ฅ๋งํผ ๋์ @ts-ignore
๋ฅผ ๊ณ์ ์ฌ์ฉํฉ๋๋ค. ๋ธ๋ก ๋ฌด์๊ฐ ์๊ฐ์ ์ผ๋ก ๋ ๋ฐฉํด๊ฐ ๋๋ค๋ ์ ์ ์ ์ธํ๊ณ ๋ ์์ ํ ๋์ผํฉ๋๋ค.
์ปค๋ฎค๋ํฐ๋ ์ฌ์ ํ TypeScript ํ์ ์๋ต์ด ํ์ํฉ๋๋ค.
@JerryGreen ๋ด ์ด์ ์๊ฒฌ์ ์ฐธ์กฐํ์ฌ ๋๊ฐ์ ๋ง์ ํ์ต๋๋ค. ๋ํ ์ฌ๋๋ค์ ์ด๋ฏธ ๋ฌด์ ๊ธฐ๋ฅ์ผ๋ก ์ด ์์ ์ ์ํํ๊ณ ์์ต๋๋ค. _none_ ์ด ์์ด์ผ ํ๋ค๊ณ ์ฃผ์ฅํ๋ฉด์ ์ฝ๊ฐ์ ๋ ์ ๊ตฌํํ ์ด์ ๊ฐ ์์ต๋๋ค.
@ts-ignore
๊ธฐ๋ฅ์ ์ ๊ฑฐํ๊ฑฐ๋ ์์ ํ ๊ธฐ๋ฅ์ผ๋ก ๋ง๋์ญ์์ค. ์ด๋ฅผ ์ํํ๊ธฐ ์ํ ๋ง์ ์ฃผ์ฅ์ด ์์ผ๋ฉฐ, ์๋ชป๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ์ฌ๋๋ค์ ๋ธ๋ก ๋ฌด์ ๊ธฐ๋ฅ๋งํผ ๋์@ts-ignore
๋ฅผ ๊ณ์ ์ฌ์ฉํฉ๋๋ค. ๋ธ๋ก ๋ฌด์๊ฐ ์๊ฐ์ ์ผ๋ก ๋ ๋ฐฉํด๊ฐ ๋๋ค๋ ์ ์ ์ ์ธํ๊ณ ๋ ์์ ํ ๋์ผํฉ๋๋ค.์ปค๋ฎค๋ํฐ๋ ์ฌ์ ํ TypeScript ํ์ ์๋ต์ด ํ์ํฉ๋๋ค.
์ผ๋ถ ํน์ ์๋๋ฆฌ์ค๋ ์ฌ์ ํ @ TS ๋ฌด์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด CDN ๊ฐ์ ธ์ค๊ธฐ๋ node_์ ์์กดํ์ง ์์ต๋๋ค. ๋ชจ๋ ์๋๋ฆฌ์ค์ TS ํ์ผ์ด ์์ต๋๋ค.
@L-Hknu ๋ช ํํ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ฌ๋๋ค์ ์ด์จ๋ ESLint์ ํจ๊ป ๋ฌด์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ ์ฌ์ฉํฉ๋๋ค.
๋ฌด์ ๊ธฐ๋ฅ์ ๊ธฐ๋ฅ์ ํ์ํ ๊ฒฝ์ฐ ์ด์ธ์ ์ปจํ ์คํธ์์๋ ํ์ฉ๋์ง ์์ต๋๋ค. ์ฝ๋๋ฅผ ๋ฌด์ํ๋ ๋ฐ ์ฌ์ฉํด๋ ๊ด์ฐฎ๋ค๋ ๋ป์ ๋๋ค.
๋๋ถ๋ถ์ ์๊ฐ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ๋ธ๋ก ๋ฌด์๊ฐ ์์ด์ผ ํ๋ ์ด์ ๋ฅผ ์ฌ์ ํ ์ ์ ์์ต๋๋ค.
์ผ๋ถ ์คํ ์์ค ์ฝ๋์ ๊ฒฝ์ฐ ์ ํ์ผ๋ก ๋ณํํ๋ ๊ฒ์ ํฌ๊ธฐํ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ํ์ํ์ง ์์ง๋ง ๋ง์ ์ฌ๋๋ค์ด ํ์ดํ์ผ๋ก ๋ฌธ ์์ผ๋ก ๋ฐ์ ๋ค์ฌ๋์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ํ ๋ธ๋ก ์ฃผ์๊ณผ ๋ชจ๋ ํ ์ฃผ์์ ๋ฏธํ์ด ์ผ๋ง๋ ๋ค๋ฅธ์ง๋ฅผ ๊ณ ๋ คํ ๋ ๋ง์ ์ฌ๋๋ค์ด ๋ ํจ์จ์ ์ผ๋ก ์ ํ์ ๊ธฐ์ฌํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
์ด ๊ตฌํ์ ๊ฐ์ฅ ํฐ ์ฌ์ฉ ์ฌ๋ก๋ typescript ์ง์์ด ์๋ ํ์ฌ ํจํค์ง์ ๋ํ ๊ฒ์ด๋ฉฐ ์ผ๋ถ ์ฌ์ฉ์ ๋ฌด์ํด์ผ ํฉ๋๋ค.
@L-Hknu ๋ช ํํ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ฌ๋๋ค์ ์ด์จ๋ ESLint์ ํจ๊ป ๋ฌด์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ ์ฌ์ฉํฉ๋๋ค.
๋ฌด์ ๊ธฐ๋ฅ์ ๊ธฐ๋ฅ์ ํ์ํ ๊ฒฝ์ฐ ์ด์ธ์ ์ปจํ ์คํธ์์๋ ํ์ฉ๋์ง ์์ต๋๋ค. ์ฝ๋๋ฅผ ๋ฌด์ํ๋ ๋ฐ ์ฌ์ฉํด๋ ๊ด์ฐฎ๋ค๋ ๋ป์ ๋๋ค.
๋๋ถ๋ถ์ ์๊ฐ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ๋ธ๋ก ๋ฌด์๊ฐ ์์ด์ผ ํ๋ ์ด์ ๋ฅผ ์ฌ์ ํ ์ ์ ์์ต๋๋ค.
์ผ๋ถ ์คํ ์์ค ์ฝ๋์ ๊ฒฝ์ฐ ์ ํ์ผ๋ก ๋ณํํ๋ ๊ฒ์ ํฌ๊ธฐํ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ํ์ํ์ง ์์ง๋ง ๋ง์ ์ฌ๋๋ค์ด ํ์ดํ์ผ๋ก ๋ฌธ ์์ผ๋ก ๋ฐ์ ๋ค์ฌ๋์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ํ ๋ธ๋ก ์ฃผ์๊ณผ ๋ชจ๋ ํ ์ฃผ์์ ๋ฏธํ์ด ์ผ๋ง๋ ๋ค๋ฅธ์ง๋ฅผ ๊ณ ๋ คํ ๋ ๋ง์ ์ฌ๋๋ค์ด ๋ ํจ์จ์ ์ผ๋ก ์ ํ์ ๊ธฐ์ฌํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
๋ค ๋๋ฏ
#40267
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ค์๊ณผ ๊ฒฐํฉ ๊ฐ๋ฅ: https://github.com/Microsoft/TypeScript/issues/19139
@marianturchyn ์ด๊ฒ์ tslint๊ฐ ์๋๋๋ค.