Comments (6)
Hi @whydrae,
we extended the RouteInfo
with this commit. It will be released from the UI5 version 1.120. Do you need the fix to be downported to the release branches? If yes, can you please tell me the version number?
Best regards,
Jiawei
from ui5-typescript.
@whydrae Which place in the linked documentation side exactly do you refer to? I only see this object with tab:
passed to the navTo(...)
method of the router. But this parameter is not typed as "RouteInfo", so it doesn't matter in this place how RouteInfo is typed.
In the three libraries with routers (core, m, f), I only see RouteInfo being used in core, in the getRouteInfoByHash(...)
method, where it is only a return type, not the type of a parameter. We can check there, whether it is correct, but anyway it wouldn't cause the trouble that I think you reported.
Can you elaborate a bit?
from ui5-typescript.
@akudev, thanks for the prompt reaction! By referring to the documentation, I wanted to point out, that query parameters are usually not type of string, but rather an object.
In my code, I use the following controller function to retrieve the current route arguments:
getCurrentRoute(): RouteInfo {
const router = this.getRouter(); // this.getOwnerComponent().getRouter();
const currentHash = router.getHashChanger().getHash();
return router.getRouteInfoByHash(currentHash); // returns typeof RouteInfo
}
Then, when I want to get the arguments themselves, I had to cast to unknown
first, otherwise I get an error:
type MyQueryRouteArgumets = {
"?query": {
tab: string;
};
};
...
const currentRoute = this.getCurrentRoute();
const args = currentRoute.arguments as unknown as MyQueryRouteArgumets;
Do you think this approach is correct, or should we rather have something like Record<string, string | object>
for the arguments
of RouteInfo
?
from ui5-typescript.
Ok, that's the "we can check there" part - and apparently it is not correct because you can get something else back.
However, would Record<string, string | object>
cut it?
Even with Record<string, string | Record<string, string | string>>
or actually Record<string, Record<string, unknown>>
one first would have to check whether it is a string to be allowed to access it as record. (https://www.typescriptlang.org/play?#code/C4TwDgpgBASg9gV2BAkgOwGZygXlhAYzgCcATAHgGdhiBLNAcwBopq7GoAffIsqm+s1YCO3NoIB8EgNwAoWRgRoCwWnDRQGEYPCSpMcABQBKAFyxEydFigBvWVEdRi2hMQ22AvlACGlC3rWcHKe8kRo1M6W+jZ4WjrRQSZysuGRALYgAIoIEMQgAAo+xD7p-njEiQYA2gBEAPwAjrn5tQC6KbQYUIagkHDdmTl5hcWl5Th4teKMtcZ2Dk5pwFDAPgBGuFBDLaMlZSFQEAA2lND2TlDLqxtbOyNF+5QAdGvrIUA)
from ui5-typescript.
Actually, the type was defined as response to SAP/openui5#3359 and apparently did not consider all cases.
I've opened internal incident 2370112658 for this and the responsible colleagues will take over.
from ui5-typescript.
@stopcoder, thanks for the modification! I develop with 1.119 currently, but usually update to the newer version. So there's no real need to downport, if it's additional overhead.
from ui5-typescript.
Related Issues (20)
- QUnit not recognized when using @sapui5/ts-types[-esm] HOT 7
- Missing working solution for event.getParameter("value") HOT 3
- Can't lower the log level HOT 5
- Missing documentation for event type names in SDK HOT 5
- Type issue with `1.115` upgrade HOT 6
- Documentation / Feature request: How to use controller extensions in TS? HOT 8
- Issue with SelectionController taking sId as mSettings HOT 1
- How to create a typed view in SAP UI5 typescript HOT 1
- Missing type definition for `sap.m.table.ColumnWidthController` HOT 4
- Wrong source type for generated type ODataModel$DataReceivedEvent HOT 1
- [ts-interface-generator] Provide a way to annotate control properties with a TS type (which might be narrower than the UI5 one)
- [ts-interface-generator] Check what happens when overridden setters and getters narrow down the type of a property
- @deprecated tag in TS Definitions should be on the last position HOT 2
- [ts-interface-generator] Interface for ManagedObject based Class Instances
- [ts-interface-generator] Generate fully qualified module names in interface for seamless use with tsc declarations
- Productive use vs. undefined support status. HOT 3
- @sapui5/types 1.121.1, 1.121.2(?) and 1.122.1: 'JQuery' only refers to a type, but is used as namespace here. HOT 1
- Regression in @sapui5/types of 1.122.1 with tsconfig for wdi5 HOT 5
- Possible issue: too many classes are abstract? HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ui5-typescript.