çŸåš@ ts-ignoreã¯ããã®ããäžã®è¡ããã®ãšã©ãŒã®ã¿ããã¥ãŒãããŸã
åããæã£ãŠããã®ã¯çŽ æŽãããããšã§ã
ãªãã¡ã¯ã¿ãªã³ã°ïŒã³ãŒãã®äžéšãã³ã¡ã³ãã¢ãŠãããŠããããªãã§ã¯äœãå£ãããã確èªããŸãããã³ã¡ã³ããããã³ãŒããå€ããªãå¯èœæ§ããããã¡ã€ã«å ã®ãšã©ãŒã«å¯ŸåŠããããšãåé¿ããŸã
ãã®ç¬ãå¿ èŠã§ã
ãã®æ©èœã®çŸåšã®äœ¿çšäŸã¯ã空çœãåŠçããåäœãã¹ãã§ãã æ£åœãªçç±ã§ã³ãŒãããŒã¹ã§ãno-trailing-whitespaceãã«ãŒã«ããªã³ã«ãªã£ãŠããŸããããããã¯ã¬ãã«ã§ãããæã¡è² ããããšãã§ããªããšããããšã¯ãES6ãã³ãã¬ãŒãæååã䜿çšããŠæ«å°Ÿã®ç©ºçœãšãã£ãªããžãªã¿ãŒã³ãç°¡åã«ãã¹ãã§ããªãããšãæå³ããŸãã
mathjsã§ã«ã¹ã¿ã ãã³ããªã³ã°_ a.k.a partial import
_ã䜿çšããç§ã®ãŠãŒã¹ã±ãŒã¹ã®1ã€
// 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ã«ãã©ã³ã¹ãã€ã«ãããES6JSã³ãŒããããã€ãç¶æ¿ããŸããããçŸæç¹ã§ã¯Babelã䜿çšããå¿ èŠããããŸãã ãã¡ã€ã«ã®ååã.tsã«å€æŽããTSã§ãã©ã³ã¹ãã€ã«ããã ãã§ããã§ãããã
@ptallettã¯ã allowJs
ã䜿çšããŠ$ .js
ãã¡ã€ã«ãã³ã³ãã€ã«ããã³ã³ãã€ã«ã«å«ããããšãã§ããŸãã ããã©ã«ãã§ã¯ããã¡ã€ã«ã®äžéšã«// @ts-check
ã³ã¡ã³ãããããã checkJs
ããªã³ã«ããªãéãã .js
ãã¡ã€ã«ã§ãšã©ãŒã¯çºçããŸããã
ç§ã¯ãŸã ãã®æ©èœã倧奜ãã§ããç§ã¯ãã¹ããã¡ã€ã«ã«åº§ã£ãŠããŸããããã¯æ¡åŒµå.tsãæã£ãŠããã®ã§ãã©ã®ãã©ã¡ãŒã¿ãã©ãã«è¡ãã®ããã€ã³ããŒãããŠç°¡åã«èŠãããšãã§ããŸãããããŠãããsrcãã¡ã€ã«ã®æšªã®ãã£ã¬ã¯ããªã«ã³ã³ãã€ã«ããããšã¯ç§ã®ãŠãŒã¹ã±ãŒã¹ã«ãšã£ãŠçŽ æŽãããã§ãã
äžéšã®ãã©ã¡ãŒã¿ãŒãæå³çã«é€å€ããããé¢æ°ã«å ã®ã¿ã€ããšã¯ç°ãªãã¿ã€ããæå®ããããããããã»ãšãã©ã®è¡ãèµ€ã«ãªããå®è¡æã«ããã§ãã¯ããããããšã©ãŒãã¹ããŒãããããšãäºæ³ãããŸãã
ããããšããã«ããããã®èµ€ãç·ããªãã®ã¯çŽ æµã§ãããã :)
æŽæ°ã¯ãããŸããããŸãã¯èª°ãããããè¡ãããã®è¯ãæ¹æ³ãèŠã€ããŸãããïŒ
TypeScriptã§lodash
ãç¹ã«lodash/fp
ã䜿çšããã®ã¯éåžžã«èŠçã§ãããææ°ããŒãžã§ã³ã®lodash
ãš@types/lodash
ã䜿çšããŠããéåžžã«ãããã«ãããšã©ãŒã¡ãã»ãŒãžã衚瀺ãããå¯èœæ§ããããŸãã
次ã®ãããã¯ã®ãšã©ãŒãç¡èŠãã@ts-ignore-block
ãããã°ã_ããªããäœãããŠããã®ããç¥ã£ãŠãã_ãã®ãããªãŠãŒã¹ã±ãŒã¹ã«æé©ã§ã:-)
ç§ã¯å€æ°ã®ã°ããŒãã«ã¹ã³ãŒãå€æ°ã䜿çšããŠã¬ã¬ã·ãŒã³ãŒãã䜿çšããŠããŸããããã¹ãŠã®è¡ã«@ ts-ignoreãæžã蟌ãã®ã¯é¢åã«ãªããŸãããããã«é¢ããæŽæ°ã¯ãããŸããïŒ
ãŸãããã®ãªã¯ãšã¹ãã®æŽæ°ãæ±ããŠããŸãã ããããšãïŒ
ããã¯ãç§ãè¡ã£ãŠããããšã«ãšã£ãŠãéåžžã«éèŠã§ãïŒã€ãŸããçæãããVueãã³ãã¬ãŒãã¬ã³ããªã³ã°é¢æ°ã®ã¿ã€ããã§ãã¯ãã³ãŒããããã¯ã®ç¹å®ã®æ€æ»ãç¡å¹ã«ããå¿
èŠããããŸãïŒã
ãã®åé¡ã«å ããŠãïŒ19139ã¯éåžžã«éèŠã§ããç¹ã«ãã³ãŒãã®å€§éšåã«é©çšããå Žåã¯ãç¹å®ã®æ€æ»ã®ã¿ãç¡å¹ã«ããå¿
èŠãããããã§ãã
ããŒã«ãã¡ã€ã«ãæå¶ããããšã§ããããvscodeãªã©ã®ãšãã£ã¿ãŒã«è¿œå ããŠã¯ãŒã¯ã¹ããŒã¹èšå®ãªã©ã«ä¿åã§ããŸãã
ãããå¿
èŠã§ãã 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ãšã³ãã£ãã£ã¯ã©ã¹ãäœæããããšãæ³å®ããŠããŸãã å€ãã®åïŒãããã£ãŠïŒã¯null蚱容ã§ã¯ãããŸããããããã£ãŠãã¯ã©ã¹å®çŸ©ãé€ããŠãããããã£ãç¹å®ã®å®çŸ©ãããåã®ç¡æ¡ä»¶ã§ãããã®ããã«æ±ãå¿ èŠããããŸãã ãã ãã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
-ç¹å®ã®ãã¡ã€ã«ã®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ãšã©ãŒã®ãŠãŒã¶ãŒå®çŸ©ã°ã«ãŒããå«ãŸããå¯èœæ§ããããŸãã
ã€ã³ããŒããããã¢ãžã¥ãŒã«ããã¹ãããignoreãããã¯ã®å€ã«ã€ããŠã¯ããããããŸããã ç§ã®å¥œã¿ã¯ãã€ã³ããŒããããã¢ãžã¥ãŒã«ãã¡ã€ã«å ã®ãããã¯ãæ瀺çã«ts-ignoreããŸãã ãããããµãŒãããŒãã£ã®ã©ã€ãã©ãªãã€ã³ããŒãããå Žåãããã«ã¯çç±ããããããããªãã®ã§ãç§ã¯ããã§ãã§ã³ã¹ã«ããŸãã
.tsignore
ãã¡ã€ã«ã欲ããã£ã
.npmignore
ïŒ.gitignore
ã®ããã«
ç¡èŠãããã¯ãããã¯ãã§ãã puppeteerãã¬ãŒã ã¯ãŒã¯ã§è¡ãè©°ãŸããŸããã puppeteerã§ã¯ãããŒãžäžã§ä»»æã®ã¹ã¯ãªãããããã¯ãå®è¡ã§ãããevaluateãã¡ãœããã䜿çšããŠããŸãã ãã®ä»»æã®ã¹ã¯ãªãããããã¯ã«ã¯ãããŒãžã§äœ¿çšã§ããé¢æ°ãžã®åç §ãå«ãŸããŠããå¯èœæ§ããããŸããã€ãŸããé¢æ°åç §ã¯å®è¡æã«äœ¿çšã§ããŸãã
// @ts-ignore-start // @ts-ignore-end
ããã¯ãã¬ã¬ã·ãŒã³ãŒãã®ãã£ã³ã¯ãæäœãããšãã«éåžžã«äŸ¿å©ã§ãããTypeScriptã«åãæ¿ããã®ã«èŠåŽããããšã¯ãããŸããã
ã ããã
// @ts-ignore-start
// @ts-ignore-end
ç§ã¯ä»¥åã«ãã®ææ¡ãããŸããããæ§æãå€æŽããããšæããŸãã
éå§-åæ¢ãŸãã¯éå§-çµäºã®ããããã«ããŸã
start
ãšend
ïŒåè©ãšããŠïŒã¯åæèªã§ã¯ãªãã®ã§ãtypescriptã«å
¥ããšãããã¯æ°žé ã«æ°ã«ãªããŸãã
ããã¯ç§ã«ãšã£ãŠã¯ãŒã«ã§ã
// @ts-ignore-begin
// @ts-ignore-end
éåžžã«å¿ èŠãªæ©èœã
ãªãããããŸã äžå¯èœãªã®ã§ããïŒ :-(
ç§ããããã¯ç¡èŠããå¿ èŠããããŸã
+1
+1
ããã«é¢ããæŽæ°ã¯ãããŸããïŒ
ðð»
/* @ts-disable */
!function(){
// no ts here!
}()
/* @ts-enable */
äžèšã®ããã«ïŒæªäœ¿çšã®å€æ°ãçºçããå¯èœæ§ã®ããTSã³ãŒãïŒSwaggerã䜿çšãªã©ïŒãçæãããšããã«ããã®æ©èœãå¿ èŠã«ãªããŸãã
+1
//@ts-ignore-file
ããªããšãTSã«ç§»è¡ããããšã¯ã§ããŸãã
ã ããã誰ãæ°ã¥ããã«çå®ã§ã¯ãªã
@RyanCavanaughã³ãã¥ããã£ã¯æããã«ãããå¿ èŠãšããŠããŸãããããã察åŠãããŠããªãçç±ã¯ãããŸããïŒ ããããšãïŒ
Typescriptãæ³£ããŠã¬ã³ããªã³ã°ããããã¯ããªããã°ããœãªã¥ãŒã·ã§ã³ãå®è¡å¯èœãã©ããã確èªããããã®ãœãªã¥ãŒã·ã§ã³ãè©ŠããŠã¿ãããšãã§ããªããããçŸåšããã«èŠåŽããŠããŸãã
çŸåšããã®æ©èœãå¿ èŠã§ãã
é¢å¿ã®ãªãããã€ãã®é¢æ°ã®ããŒãã¿ã€ããæã€ãããªãã¯ã©ã€ãã©ãªãã€ã³ããŒãããŠããŸãããããã£ãŠã skipLibCheck
ã䜿çšããŠç¡èŠããã®ã§ã¯ãªãã// @ ts-ignoreãåäžã®ã€ã³ããŒãã«äœ¿çšãããšäŸ¿å©ã§ãããã¹ãŠã®ã©ã€ãã©ãªã
æåã¯// @ ts-ignore-fileã®ã¢ã€ãã¢ã奜ãã§ããããäžè²«æ§ãä¿ã€ããã«// @ ts-ignoreã®æ¹ãããããããŸãããã§ãããã
ã ãã....ç§ã¯typescriptãã¡ã€ã«ã§//@ts-nocheck
ããµããŒãããŠïŒ33383ãéããŸããã ããŠãç§ãã¡ã¯_TypeScript_ã³ã³ãã€ã©ããŒã ãªã®ã§ãå®éã«ã¯ããããŸããïŒèµ·ãããããªåé¡ãä¿®æ£ããŠããŸãããwhaaaat !!ïŒïŒïŒïŒ-typescriptã®//@ts-ignore
ã§ãããè
ãããããããã«åé¡ã«ãªããŸããå°ããªã®ã§ãç§ãã¡ã¯....èºèºããŠããŸã...ããã«æå¶ã¡ã«ããºã ãè¿œå ããããšãèºèºããŠããŸãã ã§ããããããããªããæ¬åœã«ãã®ãããªå¹
åºãæå¶ã¡ã«ããºã ãå¿
èŠã ãšæãããããããã«è¡ã£ãŠð
@weswigham ãããã¯ããããæãéèŠãªæ©èœã§ã¯ãããŸãããã éçºäžã«äŸ¿å©ãããããŸããã æ°è¡ã®ã³ãŒãã«äžæçã«ã³ã¡ã³ãããã®ãšåãããã«ãä»ã®å Žæã§åé¡ãéçºããŠåãåããããšãããšãã«åœ¹ç«ã€å ŽåããããŸãã ãã ãããã®æ¹æ³ã§å®è¡æã®ãã°ãå®éã«åŒãèµ·ããæ¹æ³ãèŠã€ãããªãããã«ãèŠåãåãåããããšæããŸãã ãããããéçºã®ã¿ã§ãã®æ©èœãæå¹ã«ããŸããããã«ãæã«ãšã©ãŒãã¹ããŒããŸãã
ãã®åé¡ã«ã¯ãŸã ããã£ãŒãããã¯ãåŸ ã£ãŠããŸãããšããã©ãã«ãä»ããŠããã®ã§ã次ã®ããã«ãªããŸãã
æ°ããã¢ãŒããã¯ãã£ã®æ¹åæ§ããã°ãããããã¿ã€ãã³ã°ãããšãã¯ãæ°ããã¢ãŒããã¯ãã£ãæ©èœããããšã確èªããããã«ãTypeScriptã䜿çšããŠãããã¿ã€ããäœæããããšæããŸãã ãã ããå®éšäžã¯ãåäœãã¹ããã¡ã€ã«ã®ã¿ã€ããšã©ãŒãäžæçã«ç¡èŠããããšæããŸãã
åãã¡ã€ã«ã®å
é ã«ããçš®ã®@ts-ignore-
ã³ã¡ã³ããè¿œå ããã®ã¯ç°¡åã§ãã
2çªç®ã®@ kumar303ã®å¿ èŠæ§ïŒãŠããããã¹ãã§ã¯ããã®ç¹å®ã®ãããã¯/ãã¡ã€ã«ã®ãã§ãã¯ããªãã«ããããšãæçã§ãããããã®ã±ãŒã¹ãã«ããŒããã®ã¯ã¢ãµãŒã·ã§ã³ã«ãªãããã§ãã
@weswighamã³ã³ãã€ã©ãã©ã°ã®åŸãã«çœ®ãããšãã§ããŸãã
ã³ã³ãã€ã©ãã©ã°ã®åŸãã«çœ®ãããšãã§ããŸãã
å¿ èŠãããŸãã-3.7ããŒã¿çã§ãã
åïŒ https ïŒ//github.com/microsoft/TypeScript/pull/33383ïŒ @weswighamçŽ æŽããããããããšãïŒ ããã§ã®åŒ·åãªãŠãŒã¹ã±ãŒã¹ã¯ããã¡ã€ã«ã®åãã§ãã¯ãäžæçã«ç¡èŠããããšã§ãããã®ããã @ts-nocheck
ãåé€ãå¿ããå Žåã«å€±æããlintã«ãŒã«ãåºè·ããããšããå§ãããŸãã
gatsbyã«åé¡ããããéçgraphQLã¯ãšãªã¯.jsx
ãã¡ã€ã«ã§ã¯æ©èœããŸããã .tsx
ãã¡ã€ã«ã§ã¯æ©èœããŸããã ãã®ææ¡ã¯ãããåãå
¥ããããåé¿çã«ãªããšæããŸãã ïŒããã§çºè¡https://github.com/AdamLeBlanc/gatsby-plugin-ts-loader/issues/5ïŒ
ããïŒ
ææ¡ããããœãªã¥ãŒã·ã§ã³ã¯å®è£
ãããŠããŸããïŒ
// @ ts-ignore-start
// @ ts-ignore-end
éåžžã«æçã ãšæããŸãã ç§ã¯ããã«åãçµãã§ãããŸããŸããã
3.7ã§ãã¡ã€ã«å
šäœã®ãã¹ãŠã®ãšã©ãŒãæå¶ããããã«ã //@ts-nocheck
ã®ãµããŒããè¿œå ããŸããã è¡ã¬ãã«ãšãã¡ã€ã«ã¬ãã«ã®æå¶ã¯ã倧éšãããã«_ã»ãšãã©ã®_ããŒãºã網çŸ
ã§ãããšæããŸãã ãã§ãã¯ãããŠããªããã¡ã€ã«å
ã«ååã«å€§ããªãããã¯ãããããã§ãã¯ãå€ãå¿
èŠãããå Žåã¯ããã¡ã€ã«å
šäœã®ãã§ãã¯ãç¡å¹ã«ãããããããäžå¿«ãªå Žåã¯ããã§ãã¯ãããŠããªããã£ã³ã¯ãç¬èªã®ãã¡ã€ã«ã«æœåºããŠããã®ãã¡ã€ã«ã®ãã§ãã¯ãç¡å¹ã«ãããã倱æããå Žåã¯ãå®éã®åé¡ã§åè¡ãæå¶ããŸããïŒ ts-ignore
ã¯åäžã®åé¡ãç¡èŠããããšã«ãªã£ãŠããŸããã ts-nocheck
ã¯åäžã®ãã¡ã€ã«ãç¡èŠããããšã«ãªã£ãŠããŸã-ç¯å²ããŒã¹ã®æå¶ã¯å®éã«ã¯ç¹å®ã®ãŠãããã«ããããããªããããã©ããããããæªãããã§ãïŒæå¶ããŠããåäžã®åé¡ãŸãã¯æ ¹æ¬åå ã«ãããã§ããªãããïŒã å°ãªããšããšã©ãŒã³ãŒãåºæã®æå¶ããªããã°ãç§ã¯ç¯å²ããŒã¹ã®æå¶ã«ç¹ã«æ
£ããŠããŸããã
å°ãªããšãããã¡ã€ã«ã®å
é ã«1ã€ã®æå¶ïŒ //@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ã§æå¶ã䜿çšããã¹ãã§ã¯ãªããšç§ãã¡ã¯ä¿¡ããŠããã®ã§ãç§ã¯_zero_åæ
ããŠããŸãã ãããåã®åé¡ã§ããå Žåã¯ãããããã£ã¹ãããããšãã§ããŸãïŒãã®ããã any
ããã£ã¹ããããã³ççž®ã¢ãžã¥ãŒã«å®£èšãååšããŸãïŒã æ§æã®åé¡ã§ããå Žåããã¹ãŠãã²ã©ãããšã«ããå£ããŠããŸãã®ã§ãæå¶ã¯äœãããŸããïŒæå¶ã¯è§£æãšã©ãŒã«åœ±é¿ããŸããïŒã
//@ts-nocheck
ãããããšãããããããã¯ã³ãŒããããã¯ã®ãã§ãã¯ãç¡å¹ã«ããåé¡ã解決ããŸããïŒ
const $element = document.createElement('iframe')
$element.loading = 'lazy' // Property 'loading' does not exist on type 'HTMLIFrameElement'.
// @ts-nocheck
èå³æ·±ããŠãŒã¹ã±ãŒã¹ããããŸãã
Typescriptã§ORMãæ§ç¯ãŸãã¯ææããacornã䜿çšããŠã¹ããŒãã¡ã³ããDDLã«ã³ã³ãã€ã«ããŸãã
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
ã¯ç§ã®tsangularãããžã§ã¯ãã§ã¯æ©èœããŸãããã //@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");
}
ææžãã®ã³ãŒãã䜿çšãããšããã®ãã¿ãŒã³ãç°¡åã«ä¿®æ£ããŠåé¿ã§ããŸãã ãã ããã³ãŒãçæã§ã¯ãäžå¯èœãªå€ãäžå¿ èŠã«ãã¹ãããå ¥åãæäŸããªãã®ã¯ãç§ã®ãŠãŒã¶ãŒïŒéçºè ãã¿ã€ããç¥ã£ãŠããŸãïŒïŒæ¬¡ç¬¬ã§ãã
ã¿ã€ããã§ãã¯ãå®å šã«ç¡å¹ã«ãããã¯ãããŸãããããã®ãšã©ãŒã®ããã«ã³ãŒãçæã³ãŒããæ¶è²»ããä»ã®ã¡ã«ããºã ã¯ãããŸããã çæ³çã«ã¯ããã¹ãŠã®ã³ãŒãçæãã¡ã€ã«ã«å¯ŸããŠãã®1ã€ã®ãšã©ãŒãæå¶ããŸãããä»ã®ãã¹ãŠã®åãã§ãã¯ã¯ä¿æããŸãã
çŸç¶ã§ã¯ããã¹ãŠã®åãã§ãã¯ããªãã«ãã以å€ã«è§£æ±ºçã¯ãããŸããã ãã®æç¹ã§ãTypeScriptãšãã¬ãŒã³JavaScriptã®äŸ¡å€ã¯ããŸãåŸãããŠããŸããã
çå£ã§ããïŒ ããã¯ãŸã æªè§£æ±ºã®åé¡ã§ãããTS4ã«ã¯å®è£ ãããŠããŸãããïŒ ð€Šðœ
@ivnnv TS 3.9ã§ã¯// @ts-expect-error
ã䜿çšã§ããŸãããã¡ããã芧ãã ãã
@ndraiman @ts-expect-error
ã¯åã
ã®è¡ã«å¯ŸããŠæ©èœããŸããããããã¯ã«å¯ŸããŠã¯æ©èœããŸããããããã£ãŠãããããã¯ãç¡èŠããããå Žåã¯ããããã®å€ããé
眮ããå¿
èŠããããŸãã
ä»ã«äœãèŠããŸããïŒ ãã®æ©èœãå©çšããã«ã¯ãã³ãã¥ããã£ã¯äœãããå¿ èŠããããŸããïŒ
ããã®æè¯ã®äœ¿çšäŸã¯ãäœæããŠãããã¹ãŠã®ã¿ã€ãã«any
ãæžã蟌ã代ããã®æ¹æ³ã§ãã ããªãã¯çŸåŠã«å
±æããªããããããŸãããïŒããã¯ééããªãæ°åãšçç£æ§ã«åœ±é¿ãäžããŸãïŒãäžè¬çãªæåŸ
ã«äžèŽãã代æ¿æ¡ãæã£ãŠããã ãã§åãå
¥ããã®ã¯é£ããããšã§ã¯ãããŸããã
äœãåãå ¥ããããäœãåãå ¥ããããªããã«ã€ããŠã人ã ã¯ç°ãªãèŠè§£ãæã£ãŠããŸãã
äžéšã®äººã
ã«ãšã£ãŠãããã¯æéãããããããŠãã³ãŒãã®ç§»æ€ã®ãããªãããµããããšãããŠããéã人ã
ãå
¥ãããšãã§ãããããŒç¶æ
ãå¶éããŸãã
ã³ãŒãã®ãããã¯ãç¡èŠããããšã¯ã§ããã代ããã«any
ã®ãã£ã¹ããæ£ãããå¿
èŠãããã®ã¯é¢åã§å¥åŠã ãšæããŸããããã¯ãèªã¿ãããã«æªåœ±é¿ãäžããããšããããããŸãïŒé©åãªã¿ã€ããååšãããŸã§ïŒã ç¶ç¶çã«æ°ããã³ã¡ã³ããæžããããæ°ãæ£ãããã®ã«ãµããå¿
èŠãããã®ã¯ã誰ããã³ãŒãã®ãããã¯ãç¡èŠããããšã®å©ç¹ãç解ããŠããªããšããçç±ã ãã§ãç§ã®èŠè§£ã§ã¯åé¡ãããŸããã
1ã€ã¯JSããTSã«ãããžã§ã¯ãã移æ€ãããã1ã€ã¯ãµãŒãããŒãã£ã«ãã£ãŠéçºãããŠããŸãã
移æ€ããããããžã§ã¯ãã§åŸãæ§æãšã«ãŒã«ã¯ãå€ããã®ïŒes2015ãªã©ïŒã«ããããšããããæ確ãªæ§æãšå°ãªãã³ãŒããåªå ããŠéæšå¥šã«ããããšãã§ããŸãã
ãã®ãããžã§ã¯ãã移æ€ããå Žåãäžéšã®ã³ãŒãã¯TypeScriptãžã®ç§»æ€ãéåžžã«ç°¡åãªå ŽåããããŸãã ããã§ããå¿ ç¶çã«ãããšãã°ãããŒã«å€ããããå€ãã®ã³ã³ããã¹ããå¿ èŠãšãããããã®åãäœæããããã«ãã°ããã®éèããªããã°ãªããªãä»»æã®åäœã䌎ãé¢æ°ã«ã€ããŠãåã°èãããããã®ã«ééããŸãã
ãããä¿®æ£ããŠããéããã¡ã€ã«å ã®é¢æ°ãŸãã¯ã³ãŒãã®ãããã¯ããã§ãã¯ããã®ããããã®ã¯ãšãŠãçŽ æŽãããã§ãããã ã³ãŒããããã¯ãç¡èŠãããšãèªåãç¥ã£ãŠããŠå¿«é©ãªé åã«ãã°ãã移åããåŸã§äœ¿çšã§ããããã«ç¹å®ã®éšåãä¿åã§ããããã«ãªããŸãã
// @ts-check
ãåé€ããŠè¿œå ããŸãã// @ts-ignore-enable
... // @ts-ignore-disable
åã
ã®é¢æ°ãšé¢åãªã³ãŒããããã¯æãåççãšæããããã®ãèªåã§æ±ºå®ããŸãã JSãESLintã«ãŒã«ãã¯ããã«å€ããããžã§ã¯ãã«ç§»æ€ããå Žåãåãã§ãããã»ãšãã©ã®ãã®ããªãã¡ã¯ã¿ãªã³ã°ããå¿ èŠããããŸãã
PSãã®ã³ã¡ã³ãããã§ãã¯ãããšããç§ïŒããã³ä»ã®å€ãã®äººïŒã2017幎以æ¥æ±ããŠããçµéšãåŸãããã«20å以äžè²»ãããããšã«æ°ã¥ããŸããããŸããªã3幎åã®æªè§£æ±ºã®åé¡ã«ã€ããŠã³ã¡ã³ãããã ãã§ãã
@weswigham @RyanCavanaugh
ãªãã€ã³ããŒïŒ+1ïŒ
ãããšåŒãæãã«é·åããããŸã
@agusterodinããªãã®ç ç²ã¯æªã®æ³šæãåŒãä»ããŸã.....
ããŠãç§ãåçŽãªPRãäžããããšãé€ããŠãå®éã«ã¯äœãèµ·ãããŸãã:)
ãã ããå人çã«ã¯ãTSããŒã ã®æèŠã«åŒ·ãåæããŸãããã®é¢æ°ã¯æªã§ãã$ @ts-ignore-enable
ïŒãŸãã¯@ts-ignore-start
ïŒã䜿çšããã®ã§ã¯ãªããåžžã«@ts-ignore
ã®äœ¿çšãé¿ããããã«ããŠãã ããã ã ãªãã§ãããïŒã
ããããæã
ãããªããç¥ã£ãŠãããããšããã¯drinking posion to satisfie thirst
ãšèšããŸããç§ã¯ãããæªãéžæã§ããããšãç¥ã£ãŠããŸãããããããã¯ãã å¿
èŠãšãããŠããŸãã
ç·šéïŒèª¬æãšäŸãè¿œå ããŸãã
ãã®PRã¯ã2ã€ã®ãã£ã¬ã¯ãã£ã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.
å®ç§ãªäžçã§ã¯ãåå®å
šæ§ãç¡èŠããå¿
èŠã¯ãããŸããããïŒ ïŒsweat_smileïŒ
äŸãã¹ã¿ãŒã¿ãŒãªã©ã®çŽ æŽãããäœåãã³ããŒãããšãã«å¿
èŠã§ããããŸã«å
¥åãããªãããŸãã¯å
¥åãããŠããªã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
ã䜿çšã§ããªããšããåé¡ãçºçããŸãããç¡èŠãããã¯ã§è§£æ±ºã§ããã¯ãã§ãã
ç¡èŠããããšãã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ããªãã¯ç§ã®è«ç¹ã®ãããã«ã察åŠããããã®äºä»¶ã®æ°ããè°è«ã«ã€ããŠå€ãåçãä¿æããŸããã ãŸããããŒã ãå¥ã®æ¹æ³ã§æ±ºå®ããªãéããå®è£ ãã¹ãã§ã¯ãªããšè¿°ã¹ãŠããŸãããã®å Žåãåé¡ã解決ããŸããïŒ
ç³ãèš³ãããŸããããå¿ èŠãªãã¡ã€ããªãã£ãæäŸããããšã¯ã§ããŸããããçŸå®ã«ã¯ããå€ååŸã§ãããäžç·ã«æ®ããããšãåŠã°ãªããã°ãªããªãçãã§ãã ç¹å®ã®æ©èœãææ¥è£œåã«æå ¥ããããšã¯ã§ããŸãããèšèšãã©ã¡ãŒã¿ã«è©²åœããæ©èœã«ã€ããŠã¯ã人éå·¥åŠã«åºã¥ããæ¹æ³ã§è£œåã«è¿œå ããèœåãããã£ãŠãçŸåšéãããŠããäœåãã®ææ¡ããããŸãã䟿å©ã§ãå®å®ããŠããŠãååãã§ãã
çŸåšã®ãã£ãŒãããã¯ãçŸåšã®ãœãªã¥ãŒã·ã§ã³ãšåé¿çã®ç¶æ ããããã®ã·ããªãªã®åªäœæ§ãããŒã«ãããã³ãã®ä»ã®100ã®èŠå ã«åºã¥ããŠåªå é äœãä»ããŸãã çŸåšåªå 床ãé«ããªããã®ã¯ãåŸã§åªå 床ãé«ããªãå¯èœæ§ããããŸãã ãããããã¶ãåŸã§ãã®æ§è³ªã§ãããããã¯ãã®ææ¡ãã©ãã«ããããæ£ç¢ºã«è¡šãããã®ã ãšæããŸãã ããã§ã®æ±ºå®ã¯ãä»ã®ãšããããã£ãŒãããã¯ãç£èŠãç¶ãã人ã ãäœã«ééããŠããã®ããç解ããããšã§ãããã®æ©èœã¯ã次ã«è¿œå ããå¯èœæ§ã®ããä»ã®æ©èœãããåªå 床ãé«ããããäœçŸãã®æ³šç®ãéããŠããŸãã
ããã§ã®å£èª¿ã¯æ£çŽã«æµå¯Ÿçã§å人çã«è©±ãåŸåã«ãããæåŸéåã«åãã£ãŠæŒã蟌ãŸããããšã¯ãããã代æ¿æ¡ãšæ¯èŒããŠãã®è€éããäžåãä»å 䟡å€ãã©ãã«ãããããŠããããç解ããã®ã«åœ¹ç«ã€å»ºèšçãªäŒè©±ãå©é·ããŸããã
æåŸéåãèšå®ããŠç³ãèš³ãããŸããã ç§ã¯PRã«åãã掻åãèŠãŠéåžžã«ã€ã©ã€ã©ããŸãããããã®åé¡ã«ã€ããŠã¯äœããããŸããã§ããã ç§ã®ä»¥åã®ã³ã¡ã³ãã建èšçãªæ¹æ³ã§è²¢ç®ããŠããªãããšã«åæããŸãã
ãã®åé¡ã¯åŸ ã€å¿ èŠããããããããªãããšãç§ã¯åãå ¥ããããšãã§ããŸãã ããã€ãã®ãã£ãŒãããã¯ãæäŸãã解決ã«è¿ã¥ãããã«ä»ã«ã©ã®ãããªãã£ãŒãããã¯ãå¿ èŠããå°ããŸããããå¿çããããŸããã§ããã ã©ããªã«åä»ãªããšãããããŸããããç§ã®ããªãé建èšçãªã³ã¡ã³ãã¯ãããŒã ãã_äœããã®_å¿çãåŸãããã«ç§ãããªããã°ãªããªãããšã ã£ãããã§ãã
æ°å¹Žåã®700以äžã®è¯å®çãªåå¿ã䌎ãåé¡ãžã®å®éã®é²å±ã¯ãŸã ãªãããŠããªãããã§ãã ãã£ãšéããªããšã¯æããŸããããã¡ã³ããŒãå人çãªæèŠãæã£ãŠããã®ã§ãããŒã ã¯ãã®æ©èœãæ¢æ±ããããšã«ç¡é¢å¿ã§ããããã§ãã ç§ã¯ããããã¹ãŠãå®å šã«ç解ããŠããŸãã ããããããã¯ç§ãããã§åãçµãã§ããããšã§ã¯ãããŸããã äŒè©±ããããã®ã§ãããç¡èŠãããŠããŸãã
ç§ã®ãã£ãŒãããã¯ãèæ ®ããããã®æ§è³ªãèæ ®ããŠå¿çãããããšãç¥ããããšæããŸãã ããã¯ãæ©èœã»ããã®å€§ããªæ··ä¹±ã§ã¯ãããŸãããããã¯ãçæéã§èµ·åããã¢ã¯ãã£ããªPRã«ãã£ãŠç€ºãããŸãã ãã¹ãŠã®æºåãæŽãããããã¯ç¡èŠæ©èœã䜿çšããŠãã®åé¡ã®è§£æ±ºã«ç©æ¥µçã«åå¿ãç¶ããŠããŸããç§ã¯ããã®æ©èœãååŸããããã«ã³ãã¥ããã£ãäœãããªããã°ãªããªãããå°ããŸããã ç§ã¯ããŒã ããã®ããã€ãã®è«ç¹ã«åŒ·ãå察ããããã«å察ããPRãè¡ããã ãç§ãã¡ãèããå€ããªãéããäœãå€ãããªããšããã³ã¡ã³ããäžããããŸããã
ãããç§ã®æ¬²æ±äžæºãè¡šé¢åãããšããã§ãã ããŒã ã¡ã³ããŒããã®æ±ºå®ã«åããŠå€æŽãå ããããŠããããèªåèªèº«ãä»ã®äººã®ãã£ãŒãããã¯ãå®å šã«ç¡èŠããŠãããããæºåå®äºæ©èœãç¡èŠããå¿ èŠããããŸãã
ããŒã ã®èª°ããå¥ã®æ¹æ³ã§_圌ãã®åæã«åºã¥ããŠ_決å®ããªãéãããã®åé¡ã«é¢ããå€æŽã¯èŠãããªãããã§ãã ããã¯ã³ãã¥ããã£ããã®ãããªããã£ãŒãããã¯ãå¿ èŠãšããŸãããïŒ ã ããç§ã¯ééã£ãŠæåŸéåãäœã£ãã®ã§ãã
ç§ã¯@weswighamã®è«ç¹ã«å¯ŸããŠããã€ãã®è°è«ãããããã€ãã®äŸãæäŸããŸããããæ£çŽãªãšãããããã«å¯Ÿããäœããã®å¿çããŸã åŸ ã£ãŠããŸãã å©ãã«ãªã£ããšæãããå¯äžã®ããšã¯ãç®ã«èŠããŠåæºããé建èšçã§ãã£ãããšã§ããã
ããããã©ã®ããã«ç§»åããŸããïŒ ããŒã ã¯ã©ã®ãããªãã£ãŒãããã¯ãæã¿ãŸããïŒ ãçŸåšã®ãã£ãŒãããã¯ãçŸåšã®è§£æ±ºçãšåé¿çã®ç¶æ ããããã®ã·ããªãªã®åªäœæ§ãããŒã«ãããã³ãã®ä»ã®100ã®èŠå ã«åºã¥ããŠåªå é äœãä»ãããã®èåŸã«é ãããå人çãªåé¡ã®ããã§ãã äœäººãã®äººã ãããŒã ããã®å¿çãªãã§ãã£ãŒãããã¯ãæäŸããããšããã®ã§ã
ç¹°ãè¿ãã«ãªããŸãããç§ãã¡ã人ã ã®æèŠãäž»é¡ããé ãããã°ãããã¯åªå 床ãé«ããªããããããªãããšãç解ããŠããŸãã åæã«ãæ©èœãå®è£ ããæºåãæŽããè°è«ããªãããŸããã ä»å¿ èŠãªã®ã¯ãããŒã ã決å®/å¿çïŒå¿ ãããäœãå®è£ ããå¿ èŠã¯ãããŸããïŒãè¡ãããããå ¬éããããšã§ãã ãããå¿ èŠãªãã®ã§ã¯ãªãå Žåã¯ããããäœã§ãããããŸãã¯TypeScriptãç¹ã«ããã«é¢ãã_any_æ©èœãŸãã¯åé¡ã®åªå é äœãäžããã®ã«ã©ã®ããã«åœ¹ç«ã€ããæããŠãã ããã
ãã«ãã©ã€ã³ïŒ @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ãæªçšããããšã«ãªãããã¡ãã¡ã«ãããã¹ãŠã®å°ããªãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®å
šäœçãªå質ãäœäžããã ããããããŸããã
ãšããã§ããã®åé¡ã«ã¯å€ãã®ðåå¿ãããããšãããããŸããããã€ã¢ã¹ãããã£ãŠããå¯èœæ§ããããŸãããªããªããããã«ããªããããæ²é»ããŠããéããã®æ©èœããªããŠãå®å šã«å æ°ã«ãªã人ãã¯ããã«å€ãããã§ãã
@JerryGreenç§ã®å€ãã³ã¡ã³ããåç §ããŠãç§ã¯ãŸã£ããåãããšãèšããŸããã å ããŠã人ã ã¯ãã§ã«ç¡èŠæ©èœã§ãããè¡ã£ãŠããŸãã _none_ãããã¹ãã ãšäž»åŒµããŠããéãå°ãã®æ¯ãå®è£ ããçç±ã¯ãããŸããã
@ts-ignore
æ©èœãåé€ããããæ¬æ Œçã«ããŸãã ãããè¡ãã«ã¯å€ãã®è°è«ããããæªãã³ãŒããæžããŠãã人ã¯@ts-ignore
ã䜿ãç¶ããŸããããã¯ããããã¯ç¡èŠæ©èœãšåããããæªãã§ããããããã¯ç¡èŠãèŠèŠçãªæ··ä¹±ãå°ãªãããããšãé€ããŠããŸã£ããåãã§ãã
ã³ãã¥ããã£ã¯ãŸã TypeScriptããŒã ããã®å¿çãå¿ èŠãšããŠããŸãã
@JerryGreenç§ã®å€ãã³ã¡ã³ããåç §ããŠãç§ã¯ãŸã£ããåãããšãèšããŸããã å ããŠã人ã ã¯ãã§ã«ç¡èŠæ©èœã§ãããè¡ã£ãŠããŸãã _none_ãããã¹ãã ãšäž»åŒµããŠããéãå°ãã®æ¯ãå®è£ ããçç±ã¯ãããŸããã
@ts-ignore
æ©èœãåé€ããããæ¬æ Œçã«ããŸãã ãããè¡ãã«ã¯å€ãã®è°è«ããããæªãã³ãŒããæžããŠãã人ã¯@ts-ignore
ã䜿ãç¶ããŸããããã¯ããããã¯ç¡èŠæ©èœãšåããããæªãã§ããããããã¯ç¡èŠãèŠèŠçãªæ··ä¹±ãå°ãªãããããšãé€ããŠããŸã£ããåãã§ããã³ãã¥ããã£ã¯ãŸã TypeScriptããŒã ããã®å¿çãå¿ èŠãšããŠããŸãã
äžéšã®ç¹å¥ãªã·ããªãªã§ã¯ã@ TSignoreã䜿çšããå¿ èŠããããŸãã ããšãã°ãCDNã€ã³ããŒãã¯node_Theã«äŸåããŸããã TSãã¡ã€ã«ãã¢ãžã¥ãŒã«ã·ããªãªã«ååšããŸãã
@ L-Hknuæ確ã«ããŠãããŠããããšãã ãšã«ããESLintã§ç¡èŠã䜿çšããã®ã§ã人ã ã¯ããã䜿çšããŸãã
ç¡èŠæ©èœã¯ãæ©èœã«å¿ èŠãªå Žåãé€ããŠãã³ã³ããã¹ãã§çŠæ¢ãããŠããŸããã ããã¯ãã³ãŒããç¡èŠããããã«äœ¿çšããŠãåé¡ãªãããšã瀺ããŠããŸãã
ã»ãšãã©ã®å Žååãããã«äœ¿çšãããããããããã¯ç¡èŠããªãçç±ã¯ãŸã ããããŸããã
å€æã®é²è¡ã¯ãããã¯ç¡èŠã®æ¹ãã¯ããã«å¿«é©ã ã£ãã®ã§ãç§ã¯ããã€ãã®ãªãŒãã³ãœãŒã¹ã³ãŒãã®åãžã®å€æããããŸããã ç§ã¯ãããå¿ èŠãšããŸããããå€ãã®äººãã¿ã€ãã³ã°ã§ãã¢ã®äžã«è¶³ãèžã¿å ¥ãããšæããŸãã ããã«ãç¹ã«ãããã¯ã³ã¡ã³ããšãã¹ãŠã®è¡ã³ã¡ã³ãã®éã§çŸåŠãã©ãã»ã©ç°ãªãããèãããšãå€ãã®äººãããå¹ççã«å€æã«è²¢ç®ããå¯èœæ§ããããŸãã
ãã®å®è£ ã®ç§ã®æ倧ã®ãŠãŒã¹ã±ãŒã¹ã¯ãtypescriptããµããŒãããŠããªããµãŒãããŒãã£ã®ããã±ãŒãžã§ããããã®äœ¿çšæ³ã®ããã€ããç¡èŠããå¿ èŠããããŸãã
@ L-Hknuæ確ã«ããŠãããŠããããšãã ãšã«ããESLintã§ç¡èŠã䜿çšããã®ã§ã人ã ã¯ããã䜿çšããŸãã
ç¡èŠæ©èœã¯ãæ©èœã«å¿ èŠãªå Žåãé€ããŠãã³ã³ããã¹ãã§çŠæ¢ãããŠããŸããã ããã¯ãã³ãŒããç¡èŠããããã«äœ¿çšããŠãåé¡ãªãããšã瀺ããŠããŸãã
ã»ãšãã©ã®å Žååãããã«äœ¿çšãããããããããã¯ç¡èŠããªãçç±ã¯ãŸã ããããŸããã
å€æã®é²è¡ã¯ãããã¯ç¡èŠã®æ¹ãã¯ããã«å¿«é©ã ã£ãã®ã§ãç§ã¯ããã€ãã®ãªãŒãã³ãœãŒã¹ã³ãŒãã®åãžã®å€æããããŸããã ç§ã¯ãããå¿ èŠãšããŸããããå€ãã®äººãã¿ã€ãã³ã°ã§ãã¢ã®äžã«è¶³ãèžã¿å ¥ãããšæããŸãã ããã«ãç¹ã«ãããã¯ã³ã¡ã³ããšãã¹ãŠã®è¡ã³ã¡ã³ãã®éã§çŸåŠãã©ãã»ã©ç°ãªãããèãããšãå€ãã®äººãããå¹ççã«å€æã«è²¢ç®ããå¯èœæ§ããããŸãã
å®äºããããã§ã
ïŒ40267
æãåèã«ãªãã³ã¡ã³ã
ãšçµã¿åãããããšãã§ããŸãïŒ https ïŒ//github.com/Microsoft/TypeScript/issues/19139
@marianturchynããã¯tslintã§ã¯ãããŸããã