
Vasiliy
09.01.2017
13:25:09
хм, такой вопрос мб странный
про declaration merging
например, мне нужно добавить определение для рамды
там нет, например, определения для filter когда параметр – объект

Google


Vasiliy
09.01.2017
13:26:20
как я думал что это работает:
1) создаю файлик vendors.d.ts где-то у себя
2) в нем пишу что-то типа:
declare module 'ramda' {
interface Static {
filter<O, V>(fn: (value: V) => boolean): (obj: O) => O;
filter<O, V>(fn: (value: V) => boolean, obj: O): O;
}
}
но это работает не так) тк это перегружает то, что определено в @types/ramda, в смысле я так понял, что это перегружает interface Static, тк после добавления этого интерфейса ts говорит, что теперь ничего не определено, кроме того, что я добавил
я точно знаю, что должно быть можно расширять существующие типы, которые ставлю из @types/, просто я делаю что-то не так, перечитываю https://www.typescriptlang.org/docs/handbook/declaration-merging.html, но не вижу там про мой случай ничего(
из этого тоже не могу вынести ничего для себя https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#augmenting-globalmodule-scope-from-modules это ведь не мой случай с рамдой – как можно расширить интерфейс, который не экспортируется? (как в моем случае с интерейсов Static, который определен в @types/ramda)
пох, as any, некоторые вещи должны быть реально проще, чем они есть, имхо


Aleh
09.01.2017
14:21:19
а в ramda вообще есть что-то кроме Static, после того как ты добавляешь? Просто вероятно что поиск не запускается

Vasiliy
09.01.2017
14:24:12
да, там еще много интерфейсов определено:
declare var R: R.Static;
declare namespace R {
interface Functor<T> {
...
interface Reduced {}
interface Static {
}
}
вот так это выглядит внутри
а, понял вопрос)
неа, только Static, но почему не понятно

Aleh
09.01.2017
14:34:34
потому что он даже не пытается искать
мол модуль уже есть, чего его где-то искать

Vasiliy
09.01.2017
14:34:59
а как сделать слияние?

Google

Aleh
09.01.2017
14:35:03
тебе надо явно указать исходный тайпинг
через reference например

Vasiliy
09.01.2017
14:36:19
хм, сек, пробую
неа, не помогает референс(

Aleh
09.01.2017
14:54:08
о.о

Vasiliy
09.01.2017
14:54:35
у меня в корне проекта (в /src) лежит файлик vendors.d.ts, в нем определены вот эти 2 дополнительных дефинишна для рамда
потом, в некотором файле, внутри /src я указываю явно референс такой (путь корректный, иначе бы он ругался)
/// <reference path='../../../../node_modules/@types/ramda/index.d.ts'/>

Aleh
09.01.2017
14:55:48
блин, я как-то решал эту проблему
но суть именно в том, что он не ищет типы в @types потому что уже зарезолвил

Vasiliy
09.01.2017
14:56:21
о, кажись есть идея, сделать наоборот
upd: не, так тоже не работает, тк это тоже самое по сути

Roman
09.01.2017
15:04:07
это я туплю или флоу
https://tryflow.org/?code=LyogQGZsb3cgKi8KCnR5cGUgQSA9ID97CiAgICAgIGtleTE/OiBzdHJpbmcsCiAgICAgIGtleTI/OiBzdHJpbmcKfQoKZnVuY3Rpb24gZihhOiBBLCBkYXRhKSB7CiAgaWYgKCFhKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGFgKTsKICB9CiAgT2JqZWN0LmtleXMoYSkuZmluZChrZXkgPT4gewogICAgcmV0dXJuIGFba2V5XSA9PT0gZGF0YTsKICB9KTsKfQ==
разве рантайм может туда как-то добраться?

Vladimir
09.01.2017
15:08:31
Не может

Roman
09.01.2017
15:08:50
эх

Aleh
09.01.2017
15:09:21
ramda
чтобы он резолвился как-то заранее

Vasiliy
09.01.2017
15:09:56
в types?

Aleh
09.01.2017
15:10:08
в compilerOptions

Google

Vasiliy
09.01.2017
15:10:15
а, понял
не, все перепробовал, и с types и c typeRoots
сейачс попробую просто в том же файлике где пытаюсь использовать прям вот выше определить
да, вот так работает) ну да, в чем причина понятно, но вот как указать ему правильный порядок не понятно
короче для рамды так себе дешинишны на npm ( много всего нехватает
думаю себе скопипастить просто и дописывать,
кстати, если у кого-нибудь уже есть свои поделитесь плиз)

Aleh
10.01.2017
10:18:02
https://github.com/Microsoft/TypeScript-Handbook/issues/476#issuecomment-271413194

Anatoly
10.01.2017
10:28:22
Ну всё как ты и говорил )

Roman
10.01.2017
10:36:30
Не может
ну ты закрыл мое ишью и так не рассказал, какие там планы. Это ок, всех устраивает? По другим ишью тоже не очень понятно

Aleh
10.01.2017
10:38:40
я кстати не улавливаю, в ts есть конструкция const enum, которая ничего в рантайм не эмитит, но про нее указано вскользе и мало кто ее юзает
она уже лучше простого enum тем, что не эмитит ничего говняного в рантайм
проблемы с тайпчекером конечно остаются

Vladimir
10.01.2017
10:58:56
> @raxwunter
ну ты закрыл мое ишью и так не рассказал, какие там планы. Это ок, всех устраивает? По другим ишью тоже не очень понятно
да просто это дубликат, таких issue уже полно
где то даже был ответ, почему это еще не сделано

Roman
10.01.2017
10:59:31
я понял, просто интересно. вот я че-то не нашел

Vladimir
10.01.2017
10:59:42
так я же кинул там ссылку

Roman
10.01.2017
11:11:30
я видел, там пример более логичный, потому что func2 - функция переменная, которую можно вызвать еще откуда-то, но когда функция идет как лямбда, она жестко в контексте, мне кажется это можно было бы сделать

Dreamerinnoise
10.01.2017
12:46:00
Парни, вопрос по неймспейсу
declare namespace mynamespace{
function somefunc(somearg): void;
function anotherfunc(anotherarg, anotherarg1?:string):void;
}
Допустим лежит такое в declarations/index.d.ts
и потом в другом файле я пишу
mynamespace.anotherfunc(Foo, bar) << Cannot find name 'mynamespace'

Google

Dreamerinnoise
10.01.2017
12:47:00
Всё собирается, но редакторы ругаются
Что я пропустил?

Admin
ERROR: S client not available

Aleh
10.01.2017
12:47:34
Reference?
А зачем тебе namespace?

Dreamerinnoise
10.01.2017
12:48:56
Нужен

Aleh
10.01.2017
12:49:25
Нужен
Мне честно интересен кейс
Я использовал только для глобальных типов в среде для cucumber и только потому что сглупил)

Dreamerinnoise
10.01.2017
12:50:11
да, это по сути глбальные функции
которые должны быть доступны везде, типа require
нужны чисто для рантайма

Aleh
10.01.2017
12:51:09
Где ты прописал include этого index.d.ts

Dreamerinnoise
10.01.2017
12:51:24
"include": [
"./src/**/*.d.ts"
]

Aleh
10.01.2017
12:52:03
Хм
Следующий вопрос: что юзают редакторы для проверки?

Dreamerinnoise
10.01.2017
12:53:30
ща, попробую кастом сдк указать в code

Aleh
10.01.2017
12:53:46
И tsc --noEmit показывает ошибки?

Dreamerinnoise
10.01.2017
13:08:53
Нет, всё компилится

Aleh
10.01.2017
13:14:45
если tsc работает, то ищи проблему в редакторах

Google

Dreamerinnoise
10.01.2017
13:15:51
Да, это проблема редакторов

Aleh
10.01.2017
13:21:24
не те бандлы тс, не те конфиги tsconfig, неправильную команду линтер запускает и прочее

Dreamerinnoise
10.01.2017
13:29:08
в общем, это объявления для одного плагина к вебпаку.
и видимо придётся оставить так :D

Тимур
10.01.2017
17:27:02
о какая толпа с ангуляра набежала ?

Timur
10.01.2017
17:28:37

Aleh
10.01.2017
17:28:55

Timur
10.01.2017
17:29:01

Vladimir
10.01.2017
17:30:07
Пора Flow отделять отсюда

Timur
10.01.2017
17:30:25
Мутите!

Roman
10.01.2017
17:36:25