[`Update Syntax for PostgreSQL`](https://www.postgresql.org/docs/9.4/static/sql-update.html) is different:

    [ WITH [ RECURSIVE ] with_query [, ...] ]
    UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ]
        SET { column_name = { expression | DEFAULT } |
              ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) |
              ( column_name [, ...] ) = ( sub-SELECT )
            } [, ...]
        [ FROM from_list ]
        [ WHERE condition | WHERE CURRENT OF cursor_name ]
        [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]


In your case please try the below query:

    UPDATE TableA AS A
    SET indicator = B.indicator 
    FROM TableB AS B
    WHERE B.type = A.type

Result:

    gid 	type 	indicator
	--------------------------
    1 		a 		alfa
    2 		b 		alfa
    3 		e 		gama
    4 		a 		alfa
    5 		d 		beta

SQLFiddle [working DEMO](http://sqlfiddle.com/#!15/325ff/9)