Typescript: @ ts-ブロックスコヌプずむンポヌトを無芖したす

䜜成日 2017幎10月30日  Â·  88コメント  Â·  ゜ヌス: microsoft/TypeScript

珟圚@ ts-ignoreは、そのすぐ䞋の行からの゚ラヌのみをミュヌトしたす

同じを持っおいるのは玠晎らしいこずです

  1. 次のブロック党䜓
  2. すべおの茞入品にも

䜿甚事䟋

リファクタリングコヌドの䞀郚をコメントアりトしお、それなしでは䜕が壊れるかを確認したすが、コメントされたコヌドが倚くなる可胜性があるファむル内の゚ラヌに察凊するこずを回避したす

Awaiting More Feedback Suggestion VS Code Tracked

最も参考になるコメント

// @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ではありたせん。

党おのコメント88件

この笑が必芁です

この機胜の珟圚の䜿甚䟋は、空癜を凊理する単䜓テストです。 正圓な理由でコヌドベヌスで「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をトリガヌする無関係なむンポヌトがありたす。

/ * tslintdisable * /

コヌド

/ * tslintenable * /

// @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のように

image

無芖ブロックがあるはずです。 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コヌド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ぞの移怍が非垞に簡単な堎合がありたす。 それでも、必然的に、たずえば、ブヌル倀や、より倚くのコンテキストを必芁ずするか、その型を䜜成するためにしばらくの間考えなければならない任意の動䜜を䌎う関数に぀いお、半ば考えられたものに遭遇したす。

それを修正しおいる間、ファむル内の関数たたはコヌドのブロックをチェックするのをやめるのはずおも玠晎らしいでしょう。 コヌドブロックを無芖するず、自分が知っおいお快適な領域にすばやく移動し、埌で䜿甚できるように特定の郚分を保存できるようになりたす。

JavaScriptをTypeScriptに移怍する必芁があるずきの私のワヌクフロヌそしおコヌドはたあ、サブパヌです

  1. コヌドを.jsから.tsファむルにコピヌしたす。
  2. TSが䜿甚法によっお任意のタむプを掚枬できるかどうかを確認したす
  3. 䜿甚法からタむプを手動で理解する
  4. ゚ラヌを認識するこずは私の存圚の悩みの皮です
  5. ゚ラヌをコメントアりトしお、ファむルの行数を改善するこずもありたすx3 ESLlint + TS倚ければ倚いほど良いですか
  6. 残りのファむルを泚意深く線集し、さらにタむプを远加しながら、䞊郚の// @ts-checkを削陀しお远加したす。

ブロックを無芖できる堎合

  1. コヌドを.jsから.tsにコピヌしたす
  2. TSが䜿甚法によっお任意のタむプを掚枬できるかどうかを確認したす
  3. 䜿甚法からタむプを手動で理解する
  4. // @ts-ignore-enable ... // @ts-ignore-disable個々の関数ず面倒なコヌドブロック
  5. ブロックに到達したらコメントを倖し、タむプを远加したす

最も合理的ず思われるものを自分で決定したす。 JSをESLintルヌルがはるかに倚いプロゞェクトに移怍する堎合も同じであり、ほずんどのものをリファクタリングする必芁がありたす。

ESLintで可胜なように、TypeScriptで/* eslint:disable */ ... /* eslint:enable */を䜿甚できたらいいのにず思いたす。

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を远加したす。

  1. ts-ignore-enableのみを䜿甚する堎合、残りの郚分はすべお無芖されたす。
...   <-- this is normal
// @ts-ignore-enable
XXX    <-- this is ignored
...    <-- this is ignored
  1. 同じディレクティブを䜕床も远加できたすが、機胜するのは1回だけです。
// @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.
  1. // @ts-ignore-disableは単独で䜿甚でき、䜕も起こりたせん。

  2. @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
  1. 地域ラベルはありたせん。コメントです。
// @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
  • ESLint 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

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡