Czy używanie React.PropTypes
ma sens w aplikacji TypeScript React, czy jest to tylko przypadek „paska i szelek”?
Ponieważ klasa komponentu jest zadeklarowana za pomocą Props
parametru typu:
interface Props {
// ...
}
export class MyComponent extends React.Component<Props, any> { ... }
czy jest realna korzyść z dodania
static propTypes {
myProp: React.PropTypes.string
}
do definicji klasy?
Typescript i PropTypes służą różnym celom. Typescript sprawdza poprawność typów w czasie kompilacji , podczas gdy PropTypes są sprawdzane w czasie wykonywania .
Typescript jest przydatny podczas pisania kodu: ostrzeże Cię, jeśli przekażesz argument niewłaściwego typu do komponentów Reacta, da ci autouzupełnianie dla wywołań funkcji itp.
PropTypes są przydatne podczas testowania interakcji komponentów z danymi zewnętrznymi, na przykład podczas ładowania JSON z interfejsu API. PropTypes pomoże ci zdebugować (w trybie programistycznym React), dlaczego twój komponent nie działa, drukując pomocne komunikaty, takie jak:
Chociaż może się wydawać, że Typescript i PropTypes robią to samo, w rzeczywistości wcale się nie pokrywają. Ale możliwe jest automatyczne generowanie PropTypes z Typescript, dzięki czemu nie musisz dwukrotnie określać typów, zobacz na przykład:
źródło
Wydaje mi się, że w niektórych niechlujnych sytuacjach, w których nie można wywnioskować typu właściwości w czasie kompilacji, przydatne byłoby zobaczenie wszelkich ostrzeżeń wygenerowanych podczas używania
propTypes
w czasie wykonywania.Jedną z takich sytuacji może być przetwarzanie danych z zewnętrznego źródła, dla którego definicje typów nie są dostępne, na przykład zewnętrzny interfejs API pozostający poza Twoją kontrolą. Myślę, że w przypadku wewnętrznych API warto napisać (lub lepiej wygenerować) definicje typów, jeśli nie są one jeszcze dostępne.
Poza tym nie widzę żadnych korzyści (dlatego nigdy nie korzystałem z niego osobiście).
źródło