Ну, для одного, так как вы не используя выход processThing
, я предполагаю, что это ничего не возвращает, так что вы можете добавить аннотацию к этому:
export function processThing(someObj): void {
что касается someObj
... вы хотите иметь типобезопасность при переходе вокруг и доступ к этим объект?
№: не считают аннотирования его с типом any
, mixed
или Object
в зависимости от того, что именно вы имеете в виду под «любой».
Да: вам придется его аннотировать. Вы можете написать свой тип inline, но вы также можете определить тип в другом месте (в том числе в другом файле) и повторно использовать его в нескольких местах, если это необходимо. Например, как это:
type Thing = {
foo: string;
bar: number;
}
// ...
export function processThing(someObj: Thing): void {
Если someObj
, как ожидается, будет экземпляром некоторого класса ES6, вы также можете использовать этот класс в качестве типа (см docs).
executeFunction
Что касается, вы можете указать, что вы хотите функцию, которая принимает Thing
в качестве первого аргумента, и ничего не возвращает:
export function executeFunction(someFunc: (something: Thing) => void) {
Спасибо! Интересно, что для указания функции, возвращающей определенный тип, синтаксис представляет собой ': string' в одном случае, но' => string' в другом. Это смущает. – ffxsam
BTW, я считаю, что 'object' должен быть' Object'. – ffxsam
'=>' используется для обозначения типа функции. ':' используется для возвращаемого типа, когда функция уже определена, и вы аннотируете тип, который будет возвращен. Это имеет смысл, когда вы немного об этом думаете. –