Comments (3)
@Phryxia @ppeeou
I really appreciate the great explanation!
I initially believed that the prop
function was only used with pure JavaScript objects, not object values. Now I understand the reason why type definitions were written the way they are currently.
from fxts.
Currently, invalid keys can be passed without any error.
I think first case is intended behavior. As #doc says, it can receive non-key property of given obj
. Maybe this is becasue prop
can be used in pipe
to replace verbose map
like following
pipe([
{ x: 0 },
{ x: 1 },
{ y: 2 },
],
map(
obj => obj.x
)
)
And it has fairly nice return type also! #source If you're facing some problem because of unconstrained parameter type, can you tell me so that I can help for another approach?
If you want just to restrict key property via function, I recommend this implementation. (Although I'm not sure what you want through this)
function getProperty<T, K extends keyof T>(key: K, obj: T): T[K] {
return obj[key]
}
Additionally, any value can currently be passed to obj as an argument.
Since function
is also just an object, therefore there is no reason to prohibit it. Even they have some their own properties.
const f = () => {}
console.log(Object.getOwnPropertyNames(f)) // ['length', 'name']
After value being initiated from number
or boolean
literal, they're also being object. they can also have properties.
For example:
const x = 1 // definetly number literal
x.toPrecision(2) // this is valid
x.foo = 'bar' // this also valid (at least for js)
Maybe #this might helps your understanding.
from fxts.
@mass2527 @Phryxia
That's right, this is the intended behavior.
Since ramdajs also returns the same type, we judged it to be more familiar to users.
https://ramdajs.com/docs/#prop
from fxts.
Related Issues (20)
- fromEntries should return partial type HOT 5
- bug: `join` If one numeric parameter is entered, it is returned as number type rather than string.
- feat: enhance entries type HOT 1
- docs: provide recipe for beginner HOT 1
- Type inference is not working when used with Enum HOT 1
- "Type instantiation is excessively deep and possibly infinite" error with large Enum values. HOT 1
- Change `reduce` behavior, When there are two arguments for `reduce`, and the first iterator value is done:true
- docs: support seo HOT 3
- Missing type of `reduce` with initial seed in declarative form HOT 7
- Better documentation and parameter name for `reduce` HOT 2
- Test of `flat.spec.ts` is broken in `main` branch HOT 2
- Improve readability of package.json
- feat: support fluent Interface
- feat: immutable sort HOT 1
- fxts flatMap causes 'Maximum call stack size exceeded' HOT 1
- docs: Typing Error on fx doc
- How to get string type on pipe? HOT 2
- bug: `flat` type not returned properly in `fx`
- docs: broken links in Guide/Lazy Evaluation document
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 fxts.