2017-10-17 76 views
5

W VSCode linter, tslint, skarży kiedy dodać następujący kod z rodzaju:Tslint - typ trywialnie wywnioskowany - Dlaczego w tym miejscu należy zawrzeć ten typ?

serverId: number = 10; 

i daje następujący komunikat:

[tslint] typie trywialnie wyprowadzone z szeregu dosłowne, usunąć typu adnotacji (no-inferrable-typy)

Kiedy usunąć typ 'number', komunikat zniknie.

Dlaczego zamieszczanie informacji o typie jest złą praktyką?

+2

https://palantir.github.io/tslint/rules/no-inferrable-types/ mówi "Wyraźne typy, w których mogą być łatwo wywnioskowane przez kompilator, aby kod był bardziej szczegółowy." – Blorgbeard

Odpowiedz

5

To nie jest zła praktyka, ale serverId: number = 10 jest zbędna, ponieważ typ number to inferred po przypisaniu właściwości. Właśnie to TSLint no-inferrable-types ostrzega przed:

Jawne typy, w których mogą być łatwo wywnioskowane przez kompilator, powodują, że kod jest bardziej szczegółowy.

ile istnieje szansa, że ​​serverId nieruchomość może być początkowo niezdefiniowana ale być określone później (na przykład w constructor funkcji), number można bezpiecznie pominąć.

To podejście działa najlepiej z opcją noImplicitAny, ponieważ w ten sposób nie ma szans, że typ zostanie pominięty przez pomyłkę, ponieważ nie został wywnioskowany.

1

Może to być postrzegane jako hałas. Ważniejsze jest, aby wpisać niebanalne części

0

Jest to niepotrzebne, nie dostarcza żadnych nowych informacji. Jest to w zasadzie komentarz "10 to liczba".