@typescript_ru

Страница 86 из 669
Nikita
06.10.2016
13:58:12
export type OpenModalAction<State> = { type: 'MODAL_OPEN', payload: { name: string, state: State } }; const action: OpenModalAction<void> = { type: 'MODAL_OPEN', payload: { name: 'foo', state: undefined } }

как этого избежать?

в смысле не писать state:undefined?

Oleksandr
06.10.2016
13:59:51
state?: State

Google
Nikita
06.10.2016
14:01:12
не, он должен быть.. в общем понял, у меня все равно это экшн делать будет

Vladimir
06.10.2016
14:05:45
Это уже к js вопросы

Nikita
06.10.2016
14:09:58
а js тут при чем?)

Oleksandr
06.10.2016
14:10:36
к рантайм семантике

Nikita
06.10.2016
14:11:50
эм) есть система типов, она предполагает void. в js void === undefined. а отсутствующий проперти равен проперти с undefined значением

Vladimir
06.10.2016
14:13:46
> @gusnkt отсутствующий проперти равен проперти с undefined значением не равен

только результат чтения одинаковый

Nikita
06.10.2016
14:14:31
❯ node > var foo = {bar: undefined} undefined > foo.bar === foo.baz true

Vladimir
06.10.2016
14:17:14
ну и

Для рантайма все равно есть разница

Aleh
06.10.2016
14:26:40
Да, hasOwnProperty

И все такое

Ҫѐҏӗѫӑ
06.10.2016
15:20:27
in

Google
Vadim
06.10.2016
18:09:21
Народ, юзал ли кто параметр "paths" в tsconfig?

Я его использую с "baseUrl", равным "." но модули не подгружаются. Выскакивает ошибка про "Cannot resolve module ..."

Что нужно делать, что б модули подгружались?

Dreamerinnoise
06.10.2016
18:18:22
Мы используем, но нам понадобилось в вебпаке указать резолвинг модулей.

Vadim
06.10.2016
18:32:29
Все исправил, но не пашет :( Вот что прописано в tsconfig: { "compilerOptions": { "baseUrl": ".", "outDir": "./public/js", "noImplicitAny": true, "noImplicitReturns": true, "moduleResolution": "classic", "module": "commonjs", "target": "es5", "jsx": "react", "sourceMap": true, "paths": { "common/*": [ "src/common/*" ], "reusable/*": [ "src/components/reusable/*" ] } }, "exclude": [ "node_modules" ] }

А вот что в вебпак конфиге: resolve: { modulesDirectories: [ 'node_modules', 'src/common/', 'src/components/reusable/' ], extensions: ['', '.js', '.ts', '.tsx'] },

Импортирую в файле так: import { post } from 'common/utils/observable';

И получаю ругань про Cannot resolve module

Что я делаю не так?

Dreamerinnoise
06.10.2016
18:38:25
"baseUrl": "../", // tsconfig не в корне "paths": { "*": [ "app/*", ... ] } resolve: { extensions: ['.ts', '.js'], modules: [path.resolve("./app"), "node_modules"] },

Vadim
06.10.2016
18:39:03
tsconfig в корне

у нас

Сейчас попробую внести правки

Все-равно не пашет :( Теперь выглядит так: "paths": { "common/*": [ "src/common/*" ], "reusable/*": [ "src/components/reusable/*" ] } и resolve: { modulesDirectories: [ 'node_modules', path.resolve('./src/common/'), path.resolve('./src/components/reusable/') ], extensions: ['', '.js', '.ts', '.tsx'] },

Как и прежде, при импорте таким образом: import { post } from 'common/utils/observable'; Компилятор выдает ругань: ERROR in ./src/common/bunches/form-validation.ts Module not found: Error: Cannot resolve module 'common/utils/observable' in /Users/user/work/project/src/common/bunches @ ./src/common/bunches/form-validation.ts 17:19-53

В общем, буду рад любому кто разбирается как включить параметр "paths"

Alexander
06.10.2016
19:14:26
Вот тут в комментариях вроде много вариантов решения http://stackoverflow.com/questions/27502608/resolving-require-paths-with-webpack, самым верным мне кажется вариант с alias

Vadim
06.10.2016
19:20:28
resolve: { root: [ path.resolve('./src/common'), path.resolve('./src/components/reusable') ], modulesDirectories: [ 'node_modules' ], extensions: ['', '.js', '.ts', '.tsx'] },

Alexander
06.10.2016
19:33:44
Невнимательно читал, извиняюсь

Google
Ave
06.10.2016
20:51:59
parentId: ?number, parentId?: number, отличается же да?

Alexander
06.10.2016
22:02:19
parentId: ?number, parentId?: number, отличается же да?
Да. Первое - обязательное поле parentId, которому можно присвоить null или undefined, второе — необязательное поле, которому можно присвоить только number.

Alexander
06.10.2016
22:25:14
То чувство, когда снова залип на полчаса над статьей https://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science)

И каждый раз — как первый.

Ҫѐҏӗѫӑ
06.10.2016
22:37:10
история о том, как Flow в реакте апали с 0.32 на 0.33 https://github.com/facebook/react/pull/7841/files

-// $FlowFixMe https://github.com/facebook/flow/issues/2345 +// $FlowFixMe(>=0.33.0)

Ave
06.10.2016
22:42:04
:D

Ҫѐҏӗѫӑ
06.10.2016
22:48:48
подброшу и из тс пичали

(new MyClass()).constructor как вы думаете во что инферренснется?

в блядский Function(

Дмитрий
06.10.2016
22:52:08
в блядский Function(
В режиме es5?

Ҫѐҏӗѫӑ
06.10.2016
22:52:37
в любом по идее

в каком бы то ни было режиме можно вывести, что это typeof MyClass

Дмитрий
06.10.2016
23:01:09
в каком бы то ни было режиме можно вывести, что это typeof MyClass
А во что должен? Я просто не могу найти разницы в поведении ts и node

Ҫѐҏӗѫӑ
06.10.2016
23:01:36
в typeof MyClass

который уже, чем Function очевидно

не понял при чем тут node

и?

Дмитрий
06.10.2016
23:06:03
Ну ts же должен быть с этим поведением совместим? Что он кроме function может вернуть и как к этому отнесется другой js код?)

Google
Ҫѐҏӗѫӑ
06.10.2016
23:06:44
constructor — это не ссылка на класс

но у него такой же интерфейс

хз кстати что flow об этом думает

Vladimir
06.10.2016
23:08:17
да какая разница

Admin
ERROR: S client not available

Vladimir
06.10.2016
23:08:25
constructor не нужен

Ҫѐҏӗѫӑ
06.10.2016
23:08:44
так-то да, но это несовершенство type inferrence

Vladimir
06.10.2016
23:09:09
как по мне так лучше бы он просто его не видел и не давал трогать

Ҫѐҏӗѫӑ
06.10.2016
23:09:47
)

бывает 3rd party код. у тебя его нет, но вообще он бывает

Vladimir
06.10.2016
23:10:41
ну его в идеале не надо тайпчекать

Ҫѐҏӗѫӑ
06.10.2016
23:11:19
его надо. иначе хз чего он там вернет

в идеале его типизировали те чуваки, что код писали

Vladimir
06.10.2016
23:11:49
ну да

Alexander
06.10.2016
23:19:19
с 3rd party надо robustness principle придерживаться все-таки

дефинишны разве что для удобного автокомплита нужны

Mike
07.10.2016
11:58:44
Когда тайпскрипт генерит код(я таргечусь в es3) можно ли его заставить записывать именованные функции в прототип, когда он класс генерит(методы в частности). Например ListIterator.prototype.next = function () {... тут сама функция безымянная

Ҫѐҏӗѫӑ
07.10.2016
11:59:44
неа, но есть такая ишью вроде

подписываюсь, это говно

трейсы нужны

Google
Mike
07.10.2016
12:00:35
в свежих браузерах всё ок, но ie8... и не спрашивайте почему я его саппорчу

может регуляркой бабахнуть по коду

там вроде несложно

Andrey
07.10.2016
12:01:44
а в каких еще браузерах функции не берут название в name? Это добавили в последнии стандарты, но как давно стали поддерживать браузеры)

Mike
07.10.2016
12:01:53
ie8

Andrey
07.10.2016
12:02:07
а в ie10 смотрел?

Mike
07.10.2016
12:02:22
в 10 хз, в 11 ок. но мне надо саппортить 8

Ҫѐҏӗѫӑ
07.10.2016
12:14:41
ужс

Mike
07.10.2016
12:29:13
за такое наверно убивать надо? http://service.crazypanda.ru/v/clip2net/u/M/e690oHx4ZN.png

однако работает

Ҫѐҏӗѫӑ
07.10.2016
12:33:25
все равно для es3 таргета оно должно само имхо

если найдешь ишью, то скинь сюда плз

Mike
07.10.2016
12:34:18
я не факт что сейчас искать буду

уж очень хочется сегодня дововырять стектрейсы в ie8

Nikita
07.10.2016
13:18:34
а почему не TS -> babel -> es3?

Страница 86 из 669